php – XPath – 选择特定标记后的所有内容

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – XPath – 选择特定标记后的所有内容脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在h1标签之后将 HTML放入字符串直到下一个h1标签,然后继续.

例如,这是HTML

<h1>heading</h1>
<p>Paragraph</p>
<ul>
  <li>List ITem</li>
  <li>List item</li>
</ul>
<p>Paragraph</p>
<h1>heading 2</h1>
<ul>
  <li>List item</li>
  <li>List item</li>
</ul>
<p>Paragraph<img /></p>

从这里我试图创建这个数组:

array(
  0 => '<p>Paragraph</p><ul><li>List item</li><li>List item</li></ul><p>Paragraph</p>',1 => '<ul><li>List item</li><li>List item</li></ul><p>Paragraph<img /></p>'
)

什么是xpath查询选择h1标签之后的所有内容直到下一个,依此类推?

任何帮助或建议表示赞赏.

更新:

我最终想要实现的是,使用PHP创建一个数组格式

array(
  'headings' => array(
      1 => '<h1>heading</h1>',2 => '<h1>heading 2</h1>'
  ),'content'  => array(
      1 => '<p>Paragraph</p><ul><li>List item</li><li>List item</li></ul><p>Paragraph</p>',2 => '<ul><li>List item</li><li>List item</li></ul><p>Paragraph<img /></p>'
  )
)

解决方法

这是一个快速方法.

假设您的代码放在$code中:

$code = <<<'CODE'
<h1>heading</h1>
<p>Paragraph</p>
<ul>
  <li>List item</li>
  <li>List item</li>
</ul>
<p>Paragraph</p>
<h1>heading 2</h1>
<ul>
  <li>List item</li>
  <li>List item</li>
</ul>
<p>Paragraph<img /></p>
CODE;

解:

// Content array...
$content = array_map(
    function ($element) {
        return PReg_replace('/\>\s+\</','><',$element);
    },preg_split('/\<h1\>[^\<]*\<\/h1\>/',$code)
);
array_shift($content);

// headings array...
preg_match_all('/\<h1\>[^\<]*\<\/h1\>/',$code,$matches);
$headings = $matches[0];

// Result
$result = array(
    'headings' => $headings,'content'  => $content,);
print_r($result);

输出

Array
(
    [headings] => Array
        (
            [0] => <h1>heading</h1>
            [1] => <h1>heading 2</h1>
        )

    [content] => Array
        (
            [0] =>  <p>Paragraph</p><ul><li>List item</li><li>List item</li></ul><p>Paragraph</p>
            [1] =>  <ul><li>List item</li><li>List item</li></ul><p>Paragraph<img /></p>
        )
)

脚本宝典总结

以上是脚本宝典为你收集整理的php – XPath – 选择特定标记后的所有内容全部内容,希望文章能够帮你解决php – XPath – 选择特定标记后的所有内容所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。