簡體   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