[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка вводимых ссылок в чате
albanecev
Помогите решить проблему. Пишу чат.

Есть регулярка которая в чате заменяет текст на ссылку и запрещает ввод определенных ссылок

// Запрет ссылок
$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)));
}


Проблема в том что если ссылку ввести без текста, т.е сообщение только ссылка то все ок, а если ссылка будет где то в середине текста то выводит "Ссылка вырезана"

Помогите исправить пожалуйста
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.