2016-03-07 2 views
0

Я использую этот preg_replace изменить текст Ссылки на кликабельны в моем сценарии: Replacing Text link as link with preg_replacePHP - preg_replace - текст ссылки, как интерактивные ссылки

вчера я проверил мой сценарий, и эти preg_replace не работает нормально.

Вот пример:

(...) stronie http://tpn.pl/nowosci/uwaga-skiturowcy-1). 

И эти preg_replace наконец, создать это:

stronie <a href="http://tpn.pl/nowosci/uwaga-skiturowcy-1)." target="_blank">tpn.pl</a> 

Почему этот preg_replace добавил ")." в конце URL-адреса? Как принять только «A-Z, a-z, 0-9, /» в конце строки URL (думаю, я написал, что все принимают концы url?)?

Спасибо.

EDIT:

Вот мой код:

$sub_message = preg_replace('|([\w\d]*)\s?(https?://([\d\w\.-]+\.[\w\.]{2,6})[^\s\]\[\<\>]*/?)|i', '$1 <a target="_blank" href="$2">$3</a>', $value['description']); 
$sub_message = trim(str_replace("\n", "<br />", $sub_message)); 
+0

Опубликуйте свой код, мы не хотим его догадываться. –

+0

Я добавил свой код, извините, я забыл. – Majkson

+0

Взгляните на этот https://regex101.com/r/mS9dT2/1. Я добавил группу захвата, теперь вы можете понять, почему вы также получаете «)». –

ответ

0

Вы можете использовать следующий код для изменения адреса на ссылки в строке:

<?php 

$x="foobar http://example.com foobar"; 
echo preg_replace("~(https?://(?:www\.)?[^\s]+)~i","<a href='$1'>$1</a>",$x); 

Интернет демо: https://eval.in/532195

+0

AS text, мне нравится иметь только доменное имя, поэтому оно должно получиться как результат: 'foobar example.com foobar' – Majkson

+0

@Majkson Вы имеете в виду это https://eval.in/532199? – starkeen

+0

Не работает: https://eval.in/532202 – Majkson