簡體   English   中英

替換DIV標簽內的內容

[英]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);

參見http://codepad.org/GpYkteh4

正如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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM