preg replace - Parse sentence with php preg_replace_callback and ignore data inside parenthesis -


मेरे पास यह स्ट्रिंग है,

एक बड़े hoofed स्तनपायी (Equus caballus) पुरानी कोट, एक लंबी माने, और एक लंबी पूंछ, जो प्राचीन काल से पालतू है और सवारी के लिए और ड्राइंग या लोड करने के लिए इस्तेमाल किया जाता है।

जिसे इसमें परिवर्तित करने की आवश्यकता है:

P>
  1. 5 + की लंबाई वाली शब्द को एक href टैग के अंदर समझाया जाना चाहिए। (यह पहले से ही हल हो चुका है)
  2. कोष्ठकों के अंदर शब्दों को अनदेखा करना होगा। यह regex में लापता आवश्यकता

वर्तमान में, नीचे दिए गए कोड में मूल स्ट्रिंग को परिवर्तित कर रहा है (कोष्ठकों के अंदर डेटा को ध्यान नहीं दिया जा रहा है क्योंकि यह होना चाहिए ):

ए () एक कोट, एक लंबी माने, और एक लंबी पूंछ, और के लिए और के लिए इस्तेमाल किया।

यह मेरा वर्तमान है कोड:

  $ result = preg_replace_callback ('/ \ b [\ p {एल} \ p {M}] {5,} \ b / u', create_function ('$ matches', 'वापसी' & lt; a href = \ "http://words.com/" .strtolar ($ मैचों [0])। "\" & Gt; $ मैचों [0] & lt; / a & gt; "; '), $ जानकारी);  

मैं एक ही regex में दूसरी आवश्यकता कैसे लागू कर सकता हूँ? धन्यवाद!

आप एक कैप्चर समूह का उपयोग कर सकते हैं:

  $ परिणाम = (Pref_class) = preg_replace_callback ('(((^ [^]] + \)) | [\ पीएल \ पीएम] {5,} ~ u', फ़ंक्शन ($ m) {if (खाली ($ m [1])) & Lt; a href = "http://words.com/ 'strtolower ($ m [0])। & Gt;' । $ M [0] '& Lt; / a & gt;'; वापसी $ एम [1]; }, $ डेटा);  

या आप (* SKIP) (* FAIL) का उपयोग कर सकते हैं :

  $ result = preg_replace_callback ('~ \ ( [^]] + \) (* SKIP) (* FAIL) | [\ pL \ pM] {5,} ~ u ', फ़ंक्शन ($ m) {वापसी' & lt; a href = "http: // शब्द Com / 'strtolower ($ m [0])।' & Gt; ' । $ M [0] '& Lt; / a & gt;'; }, $ डेटा);  

Comments