Wednesday, 15 January 2014

regex - PHP Matching URLs and using preg_replace_callback() -


मैं $ content inside all URLs को खोजने के लिए निम्न का उपयोग करता हूं

  $ content = Preg_match_all ('/ (http [s]?: [^ \ S] *) / i', $ सामग्री, $ लिंक);   

लेकिन यह http: // भाग में http://www.google.com/some/path पर निर्भर करेगा ।

मेरे प्रश्न हैं:

1 - मैं केवल उस कोड को हिट करने के लिए कैसे संशोधित कर सकता हूं, जो कि केवल www के साथ शुरू हो रहे हैं, उदा। www.google.com ?

2 - मुख्य उद्देश्य लिंक ढूंढना है, और उन्हें किसी अन्य फ़ंक्शन से लौटाए जाने वाले मान के साथ प्रतिस्थापित करना है। मैंने preg_match_callback () की कोशिश की है, लेकिन यह काम नहीं कर रहा है (शायद इसका गलत इस्तेमाल करना ..

  $ content = preg_replace_callback ("/ (http [s]?: [^ \ S] *) / I "," my_callback ", $ content); function my_callback () {// बहुत सारे सामान स्वतंत्र रूप से preg_replace // में जोड़ते हैं। = आउटपुट ... $ आउटपुट लौटाते हैं}}   < P> अब, मेरे तर्क में (जो शायद गलत है)  $ content  से सभी मिलानों को  $ output  से बदल दिया जाएगा। मैं क्या कर रहा हूँ गलत?  

(कोई अज्ञात फ़ंक्शंस न करें - मैं एक पुरानी सर्वर पर परीक्षण कर रहा हूं)

संपादित करें - टिप्पणियों के बाद, अधिक विवरण के साथ स्पष्ट करने की कोशिश कर रहा

  फ़ंक्शन o99_simple_parse ($ content) {$ content = preg_replace_callback ('/ (http [s] ?: [^ \ s] *) / i', 'o99_simple_callback', $ सामग्री); $ सामग्री वापसी;}   

कॉलबैक:

  फ़ंक्शन o99_simple_callback ($ url) {// यूआरएल कैसे प्राप्त करें जो वास्तव में मैच है? और चौड़ाई ?? $ url = esc_url_raw ( $ Link); $ url_name = parse_url ($ url); $ url_ नाम = $ विवरण = $ url_name ['host']; // http: // से छुटकारा पाएं। $ Url = 'http: // something' Urlencode ($ url) '? W =' $ चौड़ाई; वापसी $ url; // जो मुझे वास्तव में बदलने की जरूरत है}    

आप को पहले से ही करना है regex को संशोधित करने के लिए यूआरएल की अनुमति जो www से शुरू होती है, आप इसे बस लिख सकते हैं:

  / ((http [s] ?: | www [।]) [^ \ S ] *) / I +++++++++    

No comments:

Post a Comment