php - PHP preg_replace - 从句子中替换各种 URL 的所有实例
问题描述
我真的很头疼要制作正确的 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;
}
但是,如何为PLAIN URL(未链接,即普通文本)制作 preg_replace呢?
提前感谢大家的解决方案!
因此,我的案例的最终最佳工作代码片段来自:
@user3783243 - 用于特定/更新的 TLD 列表
"/(?:https?:\/\/(?:www\.)?)?[a-z.\/\d-]+\.(com|net|org)\b/"
用户冒泡……或冒泡…… - 适用于所有 TLD
"/\S+\.[a-z]+ */"
非常感谢大家的帮助,我没想到解决方案这么快!
干杯,贝特里奥。
解决方案
<?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 类型。
输出是:这是第一个内部虚拟语句 这是第二个内部虚拟语句 这是第三个内部虚拟语句 这是第四个内部虚拟语句
推荐阅读
- python - 从 python 或 SQL 中的 url 字段中提取字符串
- java - 如何在 Spring Boot 中运行自动装配线程
- jsp - 如何访问我在脚本中的 c:set 中设置的值?
- python - Pyqt5中KeyEvent的正确处理,捕捉KeyPressEvent的问题
- webgl - WebGL 多个独立对象
- python - 有没有办法减少在数据框中循环的条件
- python - 用于 ActiveX 对象的 PyQt5 包装器,而不是 WX 包装器
- javascript - 无法创建 2d 物理游戏引擎 (JavaScript)
- java - 使用语音命令搜索
- java - 无法调用方法,试图从一种方法获取变量到另一种方法