繁体   English   中英

用于多行HTML注释的正则表达式(preg_match_all)

[英]Regex for multi-line HTML comments (preg_match_all)

我有一个带有多个注释掉的PHP数组的html文档,例如:

<!-- Array
(
[key] => 0
)
-->

使用PHP,我需要以某种方式仅解析这些注释的HTML(还有其他需要忽略的注释)并提取内容。 我一直在尝试使用preg_match_all但是我的正则表达式技能并不高。 有人能指出我正确的方向吗?

任何帮助深表感谢!

如何使用允许您访问注释(例如, 简单HTML DOM )然后使用strpos检查每个注释中是否有新行的HTML解析器。

$html = str_get_html('...HTML HERE...');
$comments = $html->find('comment');
foreach ( $comments as $comment ){
    if ( strpos($comment, "\n") !== false ){
        //process comment
    }
}

这里有三个事实

  1. 在HTML文档中,没有任何地方可以显示文字“ <!-- ”而并不表示注释(在其他任何地方都将其转义为“ &amp;!-- ”)
  2. 您似乎不想更改文档的内容,只想查找其中的位(搜索和替换很有可能会破坏文档,仅搜索并没有)
  3. 注释不能嵌套在HTML中(与普通的HTML标签相反)-这使所有区别

上面的组合意味着(lo和behold)正则表达式用于标识HTML注释。

尝试此正则表达式: <!-- Array([\\s\\S])*?--> 匹配组1将包含"Array"之后的所有内容,直至注释的关闭顺序。

您可以对找到的位进行进一步的完整性检查,以确保它们确实是您所要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM