如何从PHP中的内容中删除链接?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从PHP中的内容中删除链接?相关的知识,希望对你有一定的参考价值。

如何删除链接并保留文本?

text text text. <br><a href='http://www.example.com' target='_blank' title='title' style='text-decoration:none;'>name</a>

像这样:

text text text. <br>

我还有问题.....

$text = file_get_contents('http://www.example.com/file.php?id=name');
echo preg_replace('#<a.*?>.*?</a>#i', '', $text)

在那个网址是那个文本(带链接)......

这段代码不起作用......

怎么了?

有人能帮我吗?

答案

我建议你把文字保存在链接中。

strip_tags($text, '<br>');

或困难的方式:

preg_replace('#<a.*?>(.*?)</a>#i', '1', $text)

如果您不需要在链接中保留文本

preg_replace('#<a.*?>.*?</a>#i', '', $text)
另一答案

虽然strip_tags()能够进行基本的字符串清理,但它并不是万无一失的。如果您需要过滤的数据来自用户,特别是如果它将显示给其他用户,您可能需要查看更全面的html清理程序,如HTML Purifier。这些类型的库可以帮助您避免在路上遇到很多麻烦。

strip_tags()和各种正则表达式方法不能也不会阻止真正想要注入某些东西的用户。

另一答案

尝试:

preg_replace('/<a.*?</a>/','',"test test testa<br> <a href='http://www.example.com' target='_blank' title='title' style='text-decoration:none;'>name</a>");
另一答案

strip_tags()将删除HTML标签。

另一答案

这是我的解决方案:

function removeLink($str){
$regex = '/<a (.*)</a>/isU';
preg_match_all($regex,$str,$result);
foreach($result[0] as $rs)
{
    $regex = '/<a (.*)>(.*)</a>/isU';
    $text = preg_replace($regex,'$2',$rs);
    $str = str_replace($rs,$text,$str);
}
return $str;}

dang tin rao vat

另一答案

试试这个吧。非常简单!

$content = "text text text. <br><a href='http://www.example.com' target='_blank' title='title' style='text-decoration:none;'>name</a>";
echo preg_replace("/<a[^>]+>[a-z]+/i", "", $content);

输出:

text text text. <br>
另一答案

一个没有正则表达式的简短解决方案:

function remove_links($s){
    while(TRUE){
        @list($pre,$mid) = explode('<a',$s,2);
        @list($mid,$post) = explode('</a>',$mid,2);
        $s = $pre.$post;
        if (is_null($post))return $s;
    }
}
?>

以上是关于如何从PHP中的内容中删除链接?的主要内容,如果未能解决你的问题,请参考以下文章

XSS:如何从 C# 中的字符串中删除 JS 片段?

如何从一个片段中删除数据,这些片段应该反映在google firebase中的其他片段中

如何添加链接以编辑和删除使用php制定的表格中的每一行

如何从片段内的列表视图打开链接网址?

如何使用 jquery 从 asp.net 视图模型中动态删除行而不删除集合中的其余下一个对象

从堆栈中弹出特定片段并删除其他片段