2008-10-27 15 views
7

मेरे पास मेरे पिछली छोर में एक wysiwyg संपादक है, और यह मैंने लिखा पहली नियमित अभिव्यक्ति को पार कर रहा है। यह preg_replace() का उपयोग कर PHP4 में है। मैं यूआरआई और जुड़े हुए पाठ को कैप्चर कर रहा हूं।नियमित अभिव्यक्तियां - वैकल्पिक विशेषताओं वाले सभी एंकरों से मेल करें

@<a\shref=\"http[s]?://([^\"]*)\"[]>(.*)<\/a>@siU 

ग्राहक, सभी बाहरी लिंक एक नई विंडो में खोलने करना चाहता था ताकि अभिव्यक्ति मैं सभी (उम्मीद) बाहरी लिंक मिल जाए, लेकिन आंतरिक, पेज लंगर लिंक छोड़ने के लिए उपयोग कर रहा था, आदि

मैं है अगर उपयोगकर्ता लिंक पर बोल्ड चुनता है तो wysiwyg संपादक भी style="font-weight: bold" जोड़ता है। मैंने हाल ही में नियमित अभिव्यक्ति सीखना शुरू कर दिया है, इसलिए मुझे इस समस्या के बारे में अनिश्चितता नहीं है।

मैं यह कैसे करूँगा?

उत्तर

7

इस यह ठीक से मेल खाना चाहिए:

/<a\s+([^>]*)href="https?:\/\/([^"]*)"(.*?)>(.*?)<\/a>/ 

यहाँ उपयोगी चीज आलसी मुकाबला नहीं है। *? इसका मतलब यह है कि यह नियमित मैच के विपरीत, जो लालची है, उतना ही उतना ही मेल खाता है जितना इसे पूरी तरह से जरूरी है।

इस पाठ के साथ प्रदर्शित करने के लिए,:

/a.*c/ selects: "a b c d a b c" 
/a.*?c/ selects: "a b c" 
:

a b c d a b c d

इन regexes अलग परिणाम होगा

संबंधित मुद्दे