First of all, you need to escape—or even better, replace—the delimeters as explained in the other answers.
preg_replace('~((www|http://)[^ ]+)~', '<a href="\1">\1</a>', $str);
Secondly, to further improve the regex, the $n
replacement reference syntax is preferred over \\n
, as stated in the manual के साथ http: // या www को कैसे बदलें।
preg_replace('~((www|http://)[^ ]+)~', '<a href="$1">$1</a>', $str);
तीसरा, आप कैप्चरिंग कोष्ठक का उपयोग करके अनिवार्य रूप से उपयोग कर रहे हैं, जो केवल चीजों को धीमा कर देता है। उनसे छुटकारा पाएं। $1
से $0
को अपडेट करना न भूलें। यदि आप सोच रहे हैं, तो ये गैर-कैप्चरिंग कोष्ठक हैं: (?:)
।
preg_replace('~(?:www|http://)[^ ]+~', '<a href="$0">$0</a>', $str);
अंत में, मैं छोटे और अधिक सटीक \S
, जो \s
के विपरीत है साथ [^ ]+
की जगह लेंगे। ध्यान दें कि [^ ]+
रिक्त स्थान की अनुमति नहीं देता है, लेकिन न्यूलाइन और टैब स्वीकार करता है! \S
नहीं करता है।
preg_replace('~(?:www|http://)\S+~', '<a href="$0">$0</a>', $str);
Dup: http://stackoverflow.com/ प्रश्न/507436/कैसे-करें-i-linkify-urls-in-a-string-with-php –