You need to enable JavaScript to run this app. 如何用explode或preg_split以HTML h1标签为分隔符拆分生成目标数组
优惠活动
大模型
产品
解决方案
定价
更多

如何用explode或preg_split以HTML h1标签为分隔符拆分生成目标数组

PHP 拆分连续h1标签实现方案

基于需求指定的explode/preg_split实现要求,提供两种适配不同场景的可落地方案,均能完整保留h1标签属性、内部文本,输出符合要求的数组结构。

方案1:explode 适配固定紧密衔接场景

如果确认所有h1标签之间无空格、换行等额外字符,可通过匹配h1衔接的固定分隔符实现拆分,仅需少量后处理即可得到目标数组:

  • 拆分依据为两个h1标签的衔接部分 </h1><h1
  • 拆分后对首尾残缺的片段做标签补全

代码示例:

$html = '<h1 class="x">asd</h1><h1 class="y">zxcasd</h1>';
// 按h1衔接符拆分
$splitArr = explode('</h1><h1', $html);
// 补全第一个元素的结束标签
$splitArr[0] .= '</h1>';
// 补全后续元素的开始标签
foreach ($splitArr as $index => $item) {
    if ($index > 0) {
        $splitArr[$index] = '<h1' . $item;
    }
}
print_r($splitArr);

输出结果:

Array
(
    [0] => <h1 class="x">asd</h1>
    [1] => <h1 class="y">zxcasd</h1>
)

注意:该方案仅适用于h1标签严格紧密拼接的场景,如果h1之间存在换行、缩进等额外字符,拆分逻辑将失效。

方案2:preg_split 通用适配场景

使用正则正向预查匹配h1开标签的前序位置作为拆分点,无需后处理,可适配h1属性动态变化、h1之间存在空白字符的通用场景,鲁棒性更强。
采用的正则表达式:/(?=<h1\b[^>]*>)/

  • (?=...) 正向预查,仅匹配拆分位置不消耗字符
  • <h1\b 精确匹配h1开标签,避免误匹配<h12>这类其他标签
  • [^>]* 兼容h1标签内的任意属性(class、id等)
  • 搭配PREG_SPLIT_NO_EMPTY参数自动过滤字符串开头的空拆分元素

代码示例:

$html = '<h1 class="x">asd</h1><h1 class="y">zxcasd</h1>';
$splitArr = preg_split('/(?=<h1\b[^>]*>)/', $html, 0, PREG_SPLIT_NO_EMPTY);
print_r($splitArr);

输出结果和方案1完全一致,且即使原字符串为"<h1 class=\"x\">asd</h1>\n <h1 class=\"y\">zxcasd</h1>"(h1间存在换行和缩进),也能正确拆分得到完整的h1标签片段。

说明:该方案对绝大多数业务场景的HTML h1标签均适用,若h1属性值包含>特殊字符,需进一步调整正则逻辑,常规场景无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 19:27:03