ExBB Community » » PHP/Perl » Функция трансформирует текст в гиперссылку

Страниц (1): [1]
 

1. Gori - 27 августа 2015 — 09:23 - перейти к сообщению
Есть очень хорошая функция:

CODE:
function hyperlink($text)
{
$text = preg_replace("/(([a-z]+:\/\/)?(?:[a-zа-я0-9@:_-]+\.)+[a-zа-я0-9]{2,4}(?(2)|\/).*?)([-.,:]?(?:\\s|\$))/is",'<a href=$1>$1</a>', $text);
return($text);
}



Любая ссылка переделывается в гиперссылку. Причём независимо что стоит вначале ссылки: www или http://

Проблема в том, что, если в конце ссылки нет пробела, то и любой текст становится ссылкой до пробела. Вот так: http://exbb.infoздесьлюбойтекстдопробела

Как исправить?

Есть ещё код, который с этой задачей справляется:
CODE:
$text = preg_replace('/(http:\/\/([\w\d\.\?\&\#\;\:\+\-\=\%\/]+))/i', '<a href="$1">$1</a>', $text);

Но он не переделывает все ссылки, как первый код. Т.е. он хуже.
2. Gori - 27 августа 2015 — 10:58 - перейти к сообщению
Ещё одна проблема возникла.
Скрипт также переделывает ссылки вида:

CODE:
<img src="http://exbb.info/img/1.jpg">


И получается бардак.
3. Gori - 28 августа 2015 — 08:53 - перейти к сообщению
Решил всё же сделать вставку ссылок через быструю вставку тегов в форму отправки.

Но всё равно вещь полезная. Если кто-то доделает код, то это пригодится.

Яндекс.Метрика   

Powered by ExBB
[Script Execution time: 0.0354]     [ ]