php - Need assistance with regexp and cyrillic -


मुझे निम्न समस्या मिली

मेरे पास एक नियमित अभिव्यक्ति है जो मैंने स्वयं नहीं बनाया है:

/ P>

  "| (?! & Lt;। *?) \ B $ old_text \ b (?! [^ & Lt; & gt;] *? & Gt;)" एस "  

यह अद्भुत $ old_text $ पाठ

में पाता है, लेकिन उदाहरण के लिए $ old_text है अगर

  'डी ?? Ñ ?? Ñ ?? оÐ|ÐμÐ½Ñ ?? Ñ ?? "   

यह इसे खोज नहीं करेगा

मुझे यकीन है कि इसके सभी / b के लिए reffering

< / P>

इसलिए मैंने इसे

  \ [wÐ ° -Ñ ??] + $ old_text \ [wÐ ° -Ñ ??] +  < / प्री> 

या

  \ wÐ ° -Ñ ?? $ old_text \ wÐ ° -Ñ ??   

भी sth की कोशिश की यूनिकोड रेंज का उपयोग कर की तरह:?!?

  | (?!।? & LT; *) \ x {0410} $ old_text \ x {042F} ([^ & lt; & gt;] * & gt ;) |   

ने भी इस सीरिलिक चीज़ की कोशिश की लेकिन i''m सुर I''m सही का उपयोग नहीं कर रहा है:

  "| (?!? & Lt;। *?) \ (?!? [^ & lt; & gt;] * & gt;) ख {सिरिलिक} $ old_text \ b {सिरिलिक} | सी "  

शायद यह नहीं बल्कि सही दिशा है? लेकिन हे सब न काम करते हैं, कुछ प्रतिभाशाली पीएलएस कर सकते हैं मेरी सहायता करो ? धन्यवाद अग्रिम में

अपडेट:

  "| (?!? & Lt;। *?) \ P {सिरिलिक} + \ b $ old_text \ b (?! [^ ? & lt; & gt;] * & gt;) | सी "  

अद्यतन, यहाँ php-कोड:

  $ पाठ =" बार foo & LT; पी & gt; बारफू & lt; / p & gt; फ़ोबार Ð ?? Ñ ?? Ñ? оÐÐÐμÐ½Ñ ?? Ñ? बार बार "; $ Old_text = "Ð ?? Ñ ?? Ñ? оÐÐÐμнÑÑ ?? Ñ ??"; $ नया_पाठ = '& lt; a href = "http://foo.bar" & gt; D ?? Ñ ?? Ñ ?? оÐ|ÐμÐ½Ñ ?? Ñ ?? & lt; / a & gt;'; $ सीमा = '-1'; $ = Preg_replace (प्रतिस्थापित "|?! (& Lt;।? *) (\ P {सिरिलिक} + $ old_text \ ख) ([^ & lt; & gt;] * & gt;?!?) | सी", $ नया_पाठ, $ टेक्स्ट, $ सीमा);    

जैसा कि मैं सवाल समझता हूँ, आप जैसे to को प्रतिस्थापित करना चाहते हैं? n? ?? Ñ ?? оÐ|ÐμÐ½Ñ ?? Ñ ?? लेकिन यह भी AAAD ?? Ñ ?? Ñ ?? оÐ|ÐμÐ½Ñ ?? Ñ ?? zzz के साथ & Lt; a href = "http://foo.bar" & gt; ... & lt; / a & gt; जहां ... मिलान शब्द है

अपने inital regex से ऐसा लगता है कि यह केवल "बाहर टैग" किया जाना चाहिए।

यूनिकोड की आवश्यकता के साथ काम करने के लिए निर्दिष्ट करने के लिए यू (PCRE_UTF8) । दोनों, पैटर्न और इनपुट मान्य यूटीएफ -8 होने की संभावना है। मेरा निम्नलिखित उदाहरण भी i असत्य संशोधक का उपयोग करता है।

क्या टैग: & lt; [^ & gt;] * & gt; (* SKIP) (* F) < / Code> या | से * शब्द से मेल खाए जा सकते हैं \ p {l} से पहले और बाद में: \ b \ p {L} * शब्द \ p {एल} * \ b और। एक नमूना-पैटर्न हो सकता है:

  ~ & lt; [^ & gt;] * & gt; (* SKIP) (* एफ) | \ b (\ p {एल} * Ð ?? ?? Ñ ?? оÐ|ÐμÐ½Ñ ?? Ñ ?? \ p {एल} *) \ ख ~ ui   

(दाईं ओर विवरण देखें)


और चर के साथ एक PHP नमूना:

  $ txt = "बार foo & lt; p & gt; barfoo & lt; / p & gt; foobar विज्ञापन ?? Ñ ?? Ñ ?? оÐ|ÐμÐ½Ñ ?? Ñ ?? जेड बार बार "; $ W = "Ð ?? Ñ ?? Ñ? оÐÐÐμнÑÑ ?? Ñ ??"; $ S = '~ & lt; [^ & gt;] * & gt; (* SKIP) (* एफ) | \ b (\ p {L} *'। Preg_quote ($ w, '~')। '\ P {एल } *) \ ख ~ ui '; $ R = '& lt; a href = "http://foo.bar" & gt; \ 1 & lt; / a & gt;'; $ स्थान = preg_replace ($ s, $ r, $ txt);   



Comments