删除特定html类PHP的超链接

时间:2017-11-02 10:34:59

标签: php html hyperlink

我想删除具有特定html类的超链接并保留文本。

$string = 'My content in <a href="http://google.com" class="google">Google</a> not show, but on <a href="http://bing" class="bing">Bing</a> looks good.';

我尝试使用此代码,但删除所有超链接。我只想删除“Google”中的超链接。

$content = preg_replace( '#<a.*?>(.*?)</a>#i', '\1', $string );

我想,这样的最终结果。,

$content = 'My content in Google not show, but on <a href="http://bing" class="bing">Bing</a> looks good.';

请帮忙。谢谢。

4 个答案:

答案 0 :(得分:2)

dotnet build

如果找到“google”,它会删除所有html标记,并保留所有其余的htlm标记。

答案 1 :(得分:0)

使用this test我在Google中添加了单词,因此它与Bing链接不匹配,因此您的代码现在将成为:

$content = preg_replace( '#<a.*?>(.*?)Google</a>#i', 'Google', $string );

它现在匹配包含文本“Google”的整个链接,并使用替换功能将其替换为文本。

答案 2 :(得分:0)

我尝试此代码有利于您的需求:

$content = preg_replace( '#<a href=".*?Google.*?".*?>(.*?)</a>#i', '\1', $string );

和输出是:

My content in Google not show, but on <a href="http://bing" class="bing">Bing</a> looks good.

答案 3 :(得分:0)

混合preg_replace(混合$ pattern,混合$替换,混合$ subject [,int $ limit = -1 [,int&amp; $ count]])(来自php.net)

如您所见,您可以对第四个参数设置限制并仅采用第一个或N($ limit)

e.g:(N = 1)

$ content = preg_replace('#(。*?)#i','\ 1',$ string,1); //仅参加第一场比赛

e.g:(N = 5)

$ content = preg_replace('#(。*?)#i','\ 1',$ string,5); //将进行前五场比赛