从文本中删除锚点

时间:2011-05-03 13:28:57

标签: php regex

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

7 个答案:

答案 0 :(得分: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);
}

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

答案 1 :(得分:10)

然后你可以尝试

preg_replace('/<\/?a[^>]*>/','',$Source);

我在网上试了here on rubular

答案 2 :(得分:6)

您正在寻找strip_tags()

<?php

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

答案 3 :(得分:5)

这个问题已经回答了,但我想我会在混合中添加我的解决方案。我比接受的解决方案更喜欢这个,因为它更加重要。

$content = 
    preg_replace(array('"<a href(.*?)>"', '"</a>"'), array('',''), $content);

答案 4 :(得分:4)

使用正则表达式:

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

答案 5 :(得分:0)

尝试使用:

$str = '<p>paragraph</p><a href="http://www.google.com/" target="_blank" title="<>">google -> foo</a><div>In the div</div>';
// first, extract anchor tag
preg_match("~<a .*?</a>~", $str, $match);
// then strip the HTML tags
echo strip_tags($match[0]),"\n";

<强>输出:

google -> foo

答案 6 :(得分:0)

这里的大部分正则表达都没有帮助我。其中一些删除了锚内的内容(这完全不是OP要求的内容)而不是所有的内容,其中一些内容将匹配任何以a开头的标记等。

这是我为工作需要而创造的。我们遇到一个问题,即将HTML传递给wkhtmltopdf,其中包含锚标签(具有许多数据属性和其他属性)有时会阻止PDF生成,因此我希望在保留文本的同时删除它们。

正则表达式:

  

/&lt; /?a([^&gt;] *)?&gt; / ig

在PHP中你可以这样做:

$text = "<a href='http://www.google.com/'>Google1</a><br>" .
        "<a>Google2</a><br>" .
        "<afaketag href='http://www.google.com'>Google2</afaketag><br>" .
        "<afaketag>Google4</afaketag><br>" . 
        "<a href='http://www.google.com'><img src='someimage.jpg'></a>";
echo preg_replace("/<\/?a( [^>]*)?>/i", "", $text);

输出:

Google1<br>Google2<br><afaketag href='http://www.google.com'>Google2</afaketag><br><afaketag>Google4</afaketag><br><img src='someimage.jpg'>