[英]Replacing Content inside DIV Tags
我試圖用注釋替換特定div標簽(id =“ dd-header”)中的內容。 嘗試了幾種方法和正則表達式。 這是我最近的嘗試:
$html = preg_replace('/(<div\sid=\"dd\-header\">)[^<]+(<\/div>)/i', '<!-- Comment -->', $html);
無法正常運作。 我在這里做錯了什么?
注意: div標簽還具有多個標簽
替換示例代碼
<div id="dd-header">
<a id="logo-small" href="/" title="title"></a>
<a href="http://url/">Link 1</a> |
<a href="javascript: (function () {window.location = 'http://url=' + encodeURIComponent(window.location.href);})()">Link 2</a>
<!-- <a href="http://url">Image</a> | -->
| <a href="url">Link 3</a></div>
$html = preg_replace('/(<div\sid="dd-header">)([^<]|<.+>.*<\/.+>)+(<\/div>)/i', '$1<!-- Comment -->$3', $html);
正如rabudde發表的那樣,雖然在簡單的情況下您可以執行此操作,但對於正則表達式則無法執行一般情況。 它是正則表達式語言的局限性,因此已在此處進行了廣泛討論。
當div包含子標簽時,rabudde的代碼將失敗。
正確的方法是使用(X)HTML解析器解析樹,找到div節點,刪除其子代,然后用您喜歡的任何東西替換。
只需使用DOMDocument。 它將解析為一個DOM,它非常容易遍歷,通過ID搜索和操作。
請參閱以loadHTML開頭的文檔: http ://docs.php.net/manual/zh/domdocument.loadhtml.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.