PHP preg_replace-从句子中替换各种URL的所有实例

时间:2018-08-20 11:35:34

标签: php regex

我非常想制作适当的php preg_replace代码以从文本内容中删除所有可能的URL术语...我想防止垃圾邮件发送者在我的网站上发布内容/评论时甚至提及其URL(这将容纳很多对话者。

URL术语类型的示例:

https://www.example.com
http://www.example.com
www.example.com
subdomain.example.com
www.subdomain.example.com
example.com

初始段落:

  

https://www.subdomain.example.com这是第一个内部虚拟对象   句子。 https://www.subdomain.example.com这是第二个内在   假句子。 https://www.subdomain.example.com

应转换为本段:

  

这是第一个内部伪句子。这是第二个内部假人   句子。

我认为最简单的方法是匹配最后一个.tld(点tld)和.tld之前的任何内容(点tld)。请理解,TLD可以是.net或.anything ...

我能够找到如下代码来删除<a href="/">link</a>

function remove_html_link($link) {
$end = preg_replace('#<a.*?>.*?</a>#i', '', $link);
return $end;
}

但是请问如何为普通网址(未链接,即普通文本)制作一个preg_replace?

谢谢大家的解决方案!

  

因此,我的案例的最终最佳工作代码段来自:

     

@ user3783243-有关TLD的特定/更新列表

     

"/(?:https?:\/\/(?:www\.)?)?[a-z.\/\d-]+\.(com|net|org)\b/"

     

用户泡泡...或大跌眼镜...-对于所有TLD

     

"/\S+\.[a-z]+ */"

     

非常感谢大家的帮助,我没想到解决方案会这么快!

干杯, 贝尔蒂奥。

1 个答案:

答案 0 :(得分:0)

<?php



$data1='https://www.example.com';
$data2='http://www.example.com';
$data3='www.example.com';
$data4='www.subdomain.example.com';



$text = $data1.' This is the FIRST inner dummy sentence ';
$text .= $data2.' This is the SECOND inner dummy sentence ';
$text .= $data3.' This is the THIRD inner dummy sentence ';
$text .= $data4.' This is the FORTH inner dummy sentence ';

$string = preg_replace('/\b((https?|ftp|file):\/\/|www\.)[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', ' ', $text);



echo $string;

上面的代码将从您拥有的所有情感中删除我在变量中设置的url类型。

输出为:这是第一个内部虚拟句子这是第二个内部虚拟句子这是第三个内部虚拟句子这是第四个内部虚拟句子