Я использую следующие функции для преобразования текстовых ссылок на активные ссылки:Преобразовать текст ссылки - игнорировать изображение ЦСИ
function makeClickableLinks($text) {
$text = eregi_replace('(((f|ht){1}tp://)[[email protected]:%_\+.~#?&//=]+)','<a href="\\1">\\1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[[email protected]:%_\+.~#?&//=]+)','\\1<a href="http://\\2">\\2</a>', $text);
$text = eregi_replace('([_\.0-9a-z-][email protected]([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})','<a href="mailto:\\1">\\1</a>', $text);
return $text;
}
Это прекрасно работает, но в случае, если изображение было выложено (IMG SRC = "HTTP : //www.yyy.com/zz.gif ") приведенный выше код также попытается преобразовать src из img - без отличного результата!
Как избежать функции преобразования src тега img?
Я нашел решение:
$text = preg_replace('/(?<!http:\/\/|https:\/\/|\"|=|\'|\'>|\">)(www\..*?)(\s|\Z|\.\Z|\.\s|\<|\>|,)/i',"<a href=\"http://$1\">$1</a>$2",$text);
$text = preg_replace('/(?<!\"|=|\'|\'>|\">|site:)(https?:\/\/(www){0,1}.*?)(\s|\Z|\.\Z|\.\s|\<|\>|,)/i',"<a href=\"$1\">$1</a>$3",$text);
echo "$text";
Обратите внимание, что семейство функций 'ereg_ *' устарело. Вместо этого вы должны использовать 'preg_ *'. – Sarfraz
спасибо - видимо, старый сценарий, который я использую :) – Christoffer
@zvinx, если ваше решение работает, тогда опубликуйте его как ответ! –