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> ) ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |