【发布时间】:2017-03-29 07:52:09
【问题描述】:
我正在尝试获取两个标签之间的所有文本。文档中会有多个标签对,所以我需要获取所有条目。
这是一个文本示例
<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 class="code-class" id="code-error"> function error_notice() { ?>看起来像无效的 PHP。这是您的实际代码还是经过精简和页面前执行?
标签: php html regex parsing dom