我想删除php中的超链接
这是html
<a rel="nofollow" href="http://www.clickansave.net/download/somethingelse" title="Download Now" target="_blank"><img src="http://banners.coolmirage.com/download_bt3.png" border="0" alt="Download"></a>
如果在clickansave.net
中找到href
,我想删除上面显示的所有内容。我需要一个使用preg_replace而不是dom的解决方案,原因如下:
我知道要删除的html的完全结构,页面上只有一次出现。在这种情况下,Dom会有点矫枉过正
我尝试了以下
首先我开始删除
$input = preg_replace('#<img src="http://banners.coolmirage.com/download_bt3.png" border="0" alt="Download"><\/a>#s', '' , $input,1);
从那里我想到了这个正则表达式当然不能正常工作
$input = preg_replace('#<a.*?<img src="http://banners.coolmirage.com/download_bt3.png" border="0" alt="Download"><\/a>#s', '' , $input,1);
答案 0 :(得分:1)
这样的事情怎么样?
$string = 'This is a string <a rel="nofollow" href="http://www.clickansave.net/download/somethingelse" title="Download Now" target="_blank"><img src="http://banners.coolmirage.com/download_bt3.png" border="0" alt="Download"></a> of text. There are <A HREF="http://www.google.com">Lots Of Links</A> to find and replace.';
$string = preg_replace('~<a.*?</a>~i', 'NO_LINK_HERE', $string);
print $string;
这将输出以下内容:
This is a string NO_LINK_HERE of text. There are NO_LINK_HERE to find and replace.
修改强>
抱歉,我没有注意到只需要替换clickansave.net
网址的要求。请使用此preg_replace
代替。
$string = preg_replace('~<a.*?clickansave\.net.*?</a>~i', 'NO_LINK_HERE', $string);
print $string;
这将为您提供此输出:
This is a string NO_LINK_HERE of text. There are <A HREF="http://www.google.com">Lots Of Links</A> to find and replace.
答案 1 :(得分:0)
假设这是您的字符串,其中包含指向包含域example.net的图像或文本的超链接,
$string = '<a href="http://www.example.net/download/somethingelse" title="Download Now" target="_blank"><img src="http://banners.coolmirage.com/download_bt3.png" border="0" alt="Download"></a>';
如果要删除包含example.net的超链接,请使用
$pattern = '~(<a href="[^"]*example.net[^"]*" [^>]*>)\s*(.+)\s*(</a>)$~';
// 1 2 3
$result = preg_replace($pattern, '$2', $string);
现在$result
将包含锚点(<a ..
)标记之间的图像或文字。
如果要删除任何超链接,请使用
$pattern = '~(<a href="[^"]*" [^>]*>)\s*(.+)\s*(</a>)$~';