Я пытаюсь собрать подключаемый модуль для vBulletin, чтобы отфильтровать ссылки на сайты обмена файлами. Но, как я уверен, вы часто слышите, я новичок в php, не говоря уже о регулярных выражениях.PHP регулярное выражение для фильтрации URL-адресов из определенных доменов для использования в плагине vBulletin
В принципе, я пытаюсь собрать регулярное выражение и использовать preg_replace, чтобы найти любые URL-адреса из этих доменов и заменить всю ссылку сообщением о том, что они не разрешены. Я бы хотел, чтобы он нашел ссылку, связан ли она с гиперссылкой, размещен как обычный текст или заключен в теги [CODE] bb.
Что касается регулярных выражений, мне нужно его найти URLS со следующими, я думаю:
- Запуски с HTTP или якорной тег. Я считаю, что URLS в тегах [CODE] можно обрабатывать так же, как и URL-адреса простого текста, и это нормально, если замена заканчивается внутри тега [CODE].
- Может содержать любое количество любых символов перед доменным/словом
- Has домена где-то в середине
- Может содержать любое количество любых символов после домена
- заканчивается числом расширений, такие как (html | htm | rar | zip | 001) или в закрывающем теге привязки.
У меня такое ощущение, что это номера 2 и 4, которые меня отключают (если не намного больше). Я нашел аналогичный вопрос здесь и попытался немного разобрать код (хотя я этого и не понял). Теперь у меня есть это, которое я думал, что мог бы работать, но это не делает:
<?php
$filterthese = array('domain1', 'domain2', 'domain3');
$replacement = 'LINKS HAVE BEEN FILTERED MESSAGE';
$regex = array('!^http+([a-z0-9-]+\.)*$filterthese+([a-z0-9-]+\.)*(html|htm|rar|zip|001)$!',
'!^<a+([a-z0-9-]+\.)*$filterthese+([a-z0-9-]+\.)*</a>$!');
$this->post['message'] = preg_replace($regex, $replacement, $this->post['message']);
?>
У меня есть ощущение, что я далеко базы здесь, и я признаю, что я не совсем понимаю, не говоря уже о PHP регулярных выражений , Я открыт для любых предложений о том, как сделать это лучше, как просто заставить его работать, или ссылки на RTM (хотя я немного прочитал, и я продолжу).
Спасибо.
Отлично, я забыл об этой функции. –