我想在两个标签之间获取所有文字。文档中将有多个标记对,因此我需要获取所有条目。
以下是文字
的示例<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被解析为单独的节点。
我也尝试使用正则表达式,但无法解析所有可能的属性。
请建议解析和考虑所有可能情况的最佳方法。
答案 0 :(得分:3)
使用此功能捕获预标记内的所有内容:
<pre.*?>(.*?)<\/pre>
捕获组1包含您要查找的内容
在整个字符串上尝试使用此正则表达式,并获取捕获组1中每个匹配项的类和ID
class="(.*?)"|id="(.*?)"
答案 1 :(得分:1)
$input_lines= YOUR CODE;
preg_match_all("/<pre[^>]*>(.*?)<\/pre>/is", $input_lines, $output_array);
print_r($output_array);