Diğer yanıtlar açıklandığı gibi her şeyden önce, kaçmak veya daha iyi, yerini-delimeters gerekir.
preg_replace('~((www|http://)[^ ]+)~', '<a href="\1">\1</a>', $str);
İkinci olarak, daha da geliştirmek için düzenli ifade, $n
değiştirme referansı sözdizimi manual belirtildiği gibi, \\n
tercih edilir.
preg_replace('~((www|http://)[^ ]+)~', '<a href="$1">$1</a>', $str);
Üçüncü olarak, gereksiz tek şey yavaşlatır, yakalama parantez kullanıyor. Bunlardan kurtulun. $1
$0
güncellemek unutmayın. Eğer merak ediyorsanız, bu non-yakalama parantez şunlardır: (?: )
.
preg_replace('~(?:www|http://)[^ ]+~', '<a href="$0">$0</a>', $str);
Son olarak, [^ ]+
\s
tersi olan, daha kısa ve \S
ile daha doğru değiştirmek. [^ ]+
boşluk izin vermediğini unutmayın, ama satırsonlarını ve sekmeleri kabul etmez! \S
yok.
preg_replace('~(?:www|http://)\S+~', '<a href="$0">$0</a>', $str);