была цель: когда постятся линки в сообщениях на форуме, ссылки на собственный форум превращать в гипертекстовые, а на внешние сайты - оставлять простым текстом. сделал вот так:
Код: Выделить всё
function make_clickable($text)
{
$text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1:", $text);
// pad it with a space so we can match things at the start of the 1st line.
$ret = ' ' . $text;
if (preg_match("/forum\.site\.ru/", $ret)) {
$ret = preg_replace("#(^|[\n ])([\w]+?://([\w]+\.)*site\.ru((/[\w]*)+[\w/\.?=&\#\[\]]*)?)#is", "\\1<a href=\"\\2\" target=\"_self\">\\2</a>", $ret);
$ret = preg_replace("#(^|[\n ])((www|ftp)\.([\w]+\.)*site\.ru((/[\w]*)+[\w/\.?=&\#\[\]]*)?)#is", "\\1<a href=\"http://\\2\" target=\"_self\">\\2</a>", $ret);
$ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);
$ret = substr($ret, 1);
return($ret);
} else {
return($text);
}
}
(b)http://forum.mysite.ru(b)
линк даже на мой сайт остается текстом. если же после (b) и перед (b) вставить пробел:
(b) http://forum.mysite.ru (b)
все начинается работать как и задумано было. ткните где напортачил?