

新闻资讯
技术学院本文介绍在 php 中使用正则表达式安全、准确地提取 class 属性中包含指定关键词(如 "egg")的 `` 标签内的文本内容,并提供可直接运行的代码示例与关键注意事项。
在实际 Web 开发中,我们常需从 HTML 片段中提取特定语义的内容,例如仅获取 class 属性中包含 "egg" 的 标签所包裹的文本。原始尝试的正则 (?).+?(?=) 存在严重逻辑缺陷:它错误地将 | 视为“或”分支,导致匹配锚点混乱(如匹配到 "|egg|"> 中任意单字符),进而捕获了大量无关字符串。
正确的思路是:定位标签结构本身,再捕获其内部内容。推荐使用以下正则表达式:
/(.+?)<\/span>/✅ 完整 PHP 示例(可直接运行):
$text = 'I ate a boiled egg and ham. I ate a ham and eggs.'; preg_match_all('/(.+?)<\/span>/', $text, $matches); // $matches[1] 是第一个捕获组——即所有匹配的标签内容 if (!empty($matches[1])) {foreach ($matches[1] as $content) { echo trim($content) . "\n"; } } // 输出: // boiled egg // ham and eggs
⚠️ 重要注意事项:
总结:该正则方案简洁高效,适用于结构清晰、可控的 HTML 片段提取场景。牢记“正则处理 HTML 有风险”,简单需求可快速落地,复杂场景请转向专业解析器。