我正在尝试获取两个标签之间的所有文本。文档中将有多个标签对,因此我需要获取所有条目。
下面是一个文本示例
<pre class="code-class" id="code-error">
function error_notice() {
?>
<div class="error notice">
<p><?php _e( 'There has been an error', 'my_textdomain' ); ?></p>
</div>
<?php
}
add_action( 'admin_notices', 'my_error_notice' );
</pre>
如您所见,标签内部有嵌套代码<pre>
标签本身具有 HTML,但我需要捕获<pre>
标签之间的所有文本。我还想解析属性class
和id
例如。
我试图使用DOMDocument
解析此文本
$dom = new DOMDocument;
$dom->loadHTML($htmlString);
$preTags = $dom->getElementsByTagName('pre');
foreach($preTags as $pre)
{
但是嵌套的 HTML 解析为单独的节点。
我也尝试使用正则表达式,但无法解析所有可能的属性。
请建议解析和考虑所有可能情况的最佳方法。
使用它来捕获pre tag中的所有内容:
<pre.*?>(.*?)<'/pre>
捕获组 1 包含您要查找的内容
在整个字符串上尝试此正则表达式,并获取捕获组 1 中每个匹配项的类和 ID
class="(.*?)"|id="(.*?)"
在这里试试
在此处运行 php 示例
$input_lines= YOUR CODE;
preg_match_all("/<pre[^>]*>(.*?)<'/pre>/is", $input_lines, $output_array);
print_r($output_array);
演示 http://www.phpliveregex.com/p/hSB