簡體   English   中英

如何用 DOMDocument 替換文本

[英]How replace text with DOMDocument

需要將字母“a”更改為“1”,將“e”更改為“2”

這個大概是html,其實嵌套比較多

<body>
  <p>
    <span>sppan</span>
    <a href="#">link</a>
    some text
  </p>
  <p>
    another text
  </p>
</body>

預期產出

<body>
  <p>
    <span>spp1n</span>
    <a href="#">link</a>
    some t2xt
  </p>
  <p>
    anoth2r t2xt
  </p>
</body>

我相信您的預期輸出有錯誤(鑒於您的條件),但一般來說,可以使用 xpath 完成:

$html= '
[your html above]
';

$HTMLDoc = new DOMDocument();
$HTMLDoc->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );
$xpath = new DOMXPath($HTMLDoc);

# locate all the text elements in the html;:
$targets = $xpath->query('//*//text()');

#get the text from each element
foreach ($targets as $target) {
    $current = $target->nodeValue;

    #make the required changes
    $new = str_replace(["a", "e"],["1","2"], $current);
   
    #replace the old with the new
    $target->nodeValue=$new;
};
echo $HTMLDoc->saveHTML();

輸出:

<body>
  <p>
    <span>spp1n</span>
    <a href="#">link</a>
    som2 t2xt
  </p>
  <p>
    1noth2r t2xt
  </p>
</body>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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