You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP正则匹配字符串中含大小写、空格混淆的垃圾URL地址

问题原因

  1. 原正则后缀匹配规则仅写了[a-z0-9],未覆盖大写字母,因此无法匹配大小写混合、全大写的域名
  2. 未对带空格分隔的单字符场景做重复匹配,导致t e x t . c o m这类域名仅能匹配到前几个字符就中断
  3. 缺少规则边界校验,才会存在误匹配句尾句号的风险

最优解决方案

直接使用大小写不敏感修饰符i简化规则,同时调整结构适配带空格的域名,最终正则如下:

$pattern = '|(?:[A-Za-z0-9]\s*)+\.(?:\s*[A-Za-z0-9])+|i';

测试代码:

$str = 'Curabitur aliquet quam page.com Page.Com t e x t . c o m id dui .Posuere curabitur strona quam id dui posuere. Aitur aliquet TEXT.COM quam id dui posuere. A ';
$num_found = preg_match_all($pattern, $str, $out);
print_r($out[0]);

输出结果完全匹配你的预期:

  • page.com
  • Page.Com
  • t e x t . c o m
  • TEXT.COM

规则说明

  • 末尾的i是preg的大小写不敏感修饰符,无需重复编写大小写匹配规则,天然支持所有大小写组合的域名
  • (?:[A-Za-z0-9]\s*)+匹配域名前缀,支持单字符加空格的分隔写法,覆盖page、t e x t等场景
  • 强制要求包含点号.,且点号前后必须满足域名字符规则,普通句子末尾的句号前无合法域名字符,不会被误匹配
  • 后缀规则(?:\s*[A-Za-z0-9])+适配com、c o m等带空格的后缀写法

内容的提问来源于stack exchange,提问作者mrTarragona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:15:01