Preg match не работает на некоторых URL, а не на электронных письмах - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть код ниже в представленном разделе формы файла php.Он предназначен для перехвата любых электронных писем, содержащих URL, и отклонения их.

    if (preg_match("/(\b(((https?|ftp|file|):\/\/)|www[.])[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i", $msg)) {
      return false;
    }
    return true;   

Но я получил электронное письмо с десятками таких строк:

[url = http://example.рф]шкафы купе [/ url]

Я попытался отправить сообщение с одной из строк в исходном письме, и код заблокировал его.Почему это не остановило этого спаммера?

1 Ответ

0 голосов
/ 26 декабря 2018

На основании ответов, которые я очень ценю, я изменил код на следующий.Все, что я действительно хочу, это заблокировать URL.Неважно, какой путь и параметры, поэтому я думаю, что это ловит все возможности.Это используется вместо фильтров php, потому что страница фильтров говорит, что не может поймать URN.

    if (preg_match("/(\b(((https?|ftp|file|[-A-Z0-9]|):\/\/)|www[.]))/i", $msg)) {
...