从文本中删除锚点

Lio*_*ior 9 php regex

我需要从某些文本中删除锚标记,并且似乎无法使用正则表达式来执行此操作.
只是锚标签,而不是它们的内容.
例如,<a href="http://www.google.com/" target="_blank">google</a>会成为google.

Yan*_*lin 13

确切地说,使用正则表达式无法正确完成.

以下是使用DOM的示例:

$xml = new DOMDocument(); 
$xml->loadHTML($html); 

$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;
    $newTxtNode = $xml->createTextNode($lnkText);
    $linkNode->parentNode->replaceChild($newTxtNode, $linkNode);
}
Run Code Online (Sandbox Code Playgroud)

每当对DOM进行更改时,向后循环都很重要.


ste*_*ema 10

然后你可以试试

preg_replace('/<\/?a[^>]*>/','',$Source);
Run Code Online (Sandbox Code Playgroud)

在这里用rubular在网上尝试过


Pek*_*ica 6

你在找strip_tags().

<?php

// outputs 'google'
echo strip_tags('<a href="http://www.google.com/" target="_blank">google</a>');
Run Code Online (Sandbox Code Playgroud)

  • 我需要维护其他标签,只需要删除锚点即可。 (2认同)

CSᵠ*_*CSᵠ 5

使用正则表达式:

preg_replace('/<a[^>]+>([^<]+)<\/a>/i','\1',$html);


use*_*929 5

这个问题已经回答了,但是我想我应该将解决方案添加到组合中。我喜欢这个比接受的解决方案更好,因为它的意义更大。

$content = 
    preg_replace(array('"<a href(.*?)>"', '"</a>"'), array('',''), $content);
Run Code Online (Sandbox Code Playgroud)