加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 22:45:45 所属栏目:PHP教程 来源:网络整理
导读:我试图在h1标签之后将 HTML放入字符串直到下一个h1标签,然后继续. 例如,这是HTML: h1Heading/h1pParagraph/pul liList item/li liList item/li/ulpParagraph/ph1Heading 2/h1ul liList item/li liList item/li/ulpParagraphimg //p 从这里我试图创建这个数
我试图在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>
        )
)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读