Preg匹配在某些URL上失败-不是电子邮件

时间:2018-12-26 14:34:20

标签: php preg-match

我在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 :(得分:0)

基于我的深切感谢,我将代码更改为以下内容。我真正想要的只是阻止url。路径和参数无关紧要,所以我认为这抓住了所有可能。它用于代替php过滤器,因为过滤器页面说它无法捕获URN。

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