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

PHP中如何匹配单独一行的指定字符串(以robots.txt为例)

精准匹配robots.txt中单独一行的“Disallow: /”(允许末尾带空格)

你当前用strpos直接查找字符串的方式,会误匹配包含“Disallow: /”片段的其他行(比如Disallow: /c/portal/)。要实现只匹配单独一行、内容为“Disallow: /”且末尾可带任意空格的需求,用正则表达式做整行匹配是更合适的方案。

修改后的代码

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// 注意:原URL中的空格是笔误,已修正为标准格式
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://domain.com/robots.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$handle = curl_exec($ch);
curl_close($ch);   

// 使用正则表达式实现精准整行匹配
$pattern = '/^Disallow: \/\s*$/m';
if (preg_match($pattern, $handle)) { 
    echo "Found"; 
} else { 
    echo "Not Found"; 
}

正则表达式说明

  • ^Disallow: \/:匹配行开头的“Disallow: /”(其中/需要转义为\/,避免和正则的分隔符冲突)
  • \s*:匹配末尾任意数量的空白字符(包括空格、制表符)
  • $:匹配行的结尾
  • m:启用多行模式,让^和$作用于每一行的首尾,而不是整个文本块的首尾

测试示例robots.txt

User-agent: *
Disallow: /  << 会被正确匹配
Disallow: /c/portal/. << 不会被误匹配
Disallow: /wp-admin/
Disallow: /*/wp-admin/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:35:10