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

如何使用PHP从HTML字符串中提取所有h2标题内容存入数组

问题排查与解决方案

错误原因

  • 你编写的正则表达式没有添加PHP preg_* 系列函数要求的正则分隔符,PHP要求所有用于preg系列函数的正则必须首尾用相同的特殊符号(如/、~、#)包裹,这是代码未生效的核心原因。

适配不同场景的正确代码

场景1:确认h2标签无任何属性(纯<h2>开头)

preg_match_all('~<h2>(.*?)</h2>~i', $text, $found);
// 提取到的h2标题数组为$found[1]
$h2_title_array = $found[1];
print_r($h2_title_array);

参数说明:

  • 首尾的~是正则分隔符,避免和HTML的<>符号冲突不需要额外转义
  • 末尾的i是修正符,表示大小写不敏感,可同时匹配<h2>、<H2>等写法

场景2:h2标签可能带有class、id等属性(如<h2 class="title">xxx</h2>)

// <h2[^>]*> 匹配所有带任意属性的h2开标签
preg_match_all('~<h2[^>]*>(.*?)</h2>~i', $text, $found);
$h2_title_array = $found[1];
print_r($h2_title_array);

特殊场景补充:h2内容包含换行

如果你的h2标签内的内容存在换行,需要在修正符中加s,让通配符.可以匹配换行符:

preg_match_all('~<h2[^>]*>(.*?)</h2>~is', $text, $found);
$h2_title_array = $found[1];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:30:02