PHP bulduğun http için Regex Pattern

2 Cevap php

Nasıl bu metinden HTTP ayıklamak?

"Text: Here's 2 free bonuses. http://blablabla.blabla/blabla "

But the URL can also be another one.

Finally

Ben genellikle sadece bir URL içeren dizi, nasıl ben aynı pozisyonda tam olarak yukarıdaki metne ekleyebilirsiniz aldıktan sonra? Ancak HTML etiketiyle <a>

Sonuçlar bu gibi görünmelidir:

"Text: Here's 2 free bonuses. 
<a href='http://blablabla.blabla/blabla'>http://blablabla.blabla/blabla</a> "

2 Cevap

Yapabileceğiniz düzenli ifade kullanarak, ve daha doğrusu preg_replace(). Ifade eşleşmesi gibi bir şey olabilir:

$pattern = 'http://[a-zA-Z0-9\.\-/]+';

Tabii ki, daha kesin eşleştirme için rafine edebilirsiniz, ama bu hile yapmak gerekir. Eğer regex ile oynamak istiyorsanız, regexpal, bu test için harika bir araç bakabilirsiniz. Sonra (0 $ tüm eşleşen dize karşılık yerini gerçekleştirebilirsiniz:

preg_replace($pattern, '<a href="$0">$0</a>', $yourString);

Bu regex hile yapmak gerekir:

$s= "Text: Here's 2 free bonuses. http://blablabla.blabla/blabla and some more text";
$s2= preg_replace('~(http://\S+)\b~', '<a href="$1">$1</a>', $s);
var_dump($s2);