Есть регулярка которая в чате заменяет текст на ссылку и запрещает ввод определенных ссылок
// Запрет ссылок
$arr_url = array('rghost.ru', 'joxi.ru', 'mepic.ru', 'prntscr.com', 'radikall.com', 'radikal.ru', 'belarusbux.com');
$site = getHost($mess);
if (!in_array($site, $arr_url)) {
$mess= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "<b style='color: red;'> Ссылка вырезана</b>", $mess);
$mess= preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", "<b style='color: red;'> Ссылка вырезана</b>", $mess);
$mess= preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "<b style='color: red;'> Ссылка вырезана</b>", $mess);
} else {
$mess= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2<a href=\"$3\" target=_new>$3</a>", $mess);
$mess= preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", "$1$2<a href=\"http://$3\" target=_new>$3</a>", $mess);
$mess= preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "$1<a href=\"mailto:$2@$3\" target=_new>$2@$3</a>", $mess);
}
function getHost($Address) {
$parseUrl = parse_url(trim($Address));
return trim($parseUrl[host] ? $parseUrl[host] : array_shift(explode('/', $parseUrl[path], 2)));
}
Проблема в том что если ссылку ввести без текста, т.е сообщение только ссылка то все ок, а если ссылка будет где то в середине текста то выводит "Ссылка вырезана"
Помогите исправить пожалуйста