如何使用DOMDocument解析HTML并替换特定标记

时间:2017-02-27 19:11:32

标签: php dom domdocument

我有一个文本,我想加载为DOMDocument并替换特定的标签。

<a href="https://www.google.co.in/dsfethtrw">link1</a>

There's only one thing people of the Internet love more than an absolutely epic 

<a href="https://www.google.co.in/dsfethtrfersgest">link2</a>
mistake on live television

<a href="https://www.google.co.in/ewferagre">link3</a>

我想删除标签,输出应该是:

 **link1**

        There's only one thing people of the Internet love more than an absolutely epic 

       **link2**    
mistake on live television

       **link3**

代码:

$dom = new DOMDocument;
$dom->loadHTML($entity->body[$field_lang][0]['value']);
foreach ($dom->getElementsByTagName('a') as $node) {
  $node->removeAttribute('href');
}
$entity->body[$field_lang][0]['value'] = $dom->saveHTML();

它给我的输出如下:

<a>link1</a> etc...

我如何摆脱标签并仅输出文本Ex。的 LINK1

2 个答案:

答案 0 :(得分:0)

$ text = strip_tags($ link);

请参阅:http://php.net/manual/en/function.strip-tags.php

答案 1 :(得分:0)

使用DOMDocument替换特定的href

$xml = new DOMDocument();
$xml->loadHTML($entity->body[$field_lang][0]['value']);

$links = $xml->getElementsByTagName('a');

//Loop through each <a> tags and replace them by their text content
for ($i = $links->length - 1; $i >= 0; $i--) {
  $linkNode = $links->item($i);
  $lnkText = $linkNode->textContent;

  if ($url == $linkNode->attributes->item(0)->nodeValue) {
    $newTxtNode = $xml->createTextNode($lnkText);
    $linkNode->parentNode->replaceChild($newTxtNode, $linkNode);
  }
}
$entity->body[$field_lang][0]['value'] = $xml->saveHTML();