Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从文本字符串中删除URL_Php_Regex - Fatal编程技术网

Php 从文本字符串中删除URL

Php 从文本字符串中删除URL,php,regex,Php,Regex,可以在PHP中搜索和删除字符串中的URL吗。这里讨论的是实际文本,而不是HTML。要删除的示例: mywebsite.com http://mywebsite.org www.mywebsite.co.uk www.my-web-site.net sub.mywebsite.edu etc 我的问题是用户提交一个描述字段并使用它来提升他们自己的URL。我不确定这是否可能不产生太多的误报。我曾考虑过检测http://或www。但这并不能阻止像mywebsite.com这样的链接。你可以尝试查找.

可以在PHP中搜索和删除字符串中的URL吗。这里讨论的是实际文本,而不是HTML。要删除的示例:

mywebsite.com
http://mywebsite.org
www.mywebsite.co.uk
www.my-web-site.net
sub.mywebsite.edu
etc

我的问题是用户提交一个描述字段并使用它来提升他们自己的URL。我不确定这是否可能不产生太多的误报。我曾考虑过检测http://或www。但这并不能阻止像mywebsite.com这样的链接。你可以尝试查找.TLD,其中TLD是任何现有的顶级域,但这可能会导致太多误报

有没有可能实现一个系统,其中包含有问题内容的帖子需要适度发布,但其他帖子会立即发布?我假设禁止此类内容是公司的业务要求


就我个人而言,我倾向于阻止任何超链接,并保持这种状态。但是,它不是我的应用程序。

您可以轻松地使用正则表达式查找URL,然后使用PHP函数指定要替换的内容

编辑:由于这是用户提交的数据,您可能需要在存储“描述”字段之前进行一些验证,并检查它是否包含URL。如果是,您可以阻止用户保存表单


为此,您可以在仍然使用正则表达式查找URL的情况下使用。

此正则表达式似乎起到了以下作用:

!\b(((ht|f)tp(s?))\://)?(www.|[a-z].)[a-z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(/($|[a-z0-9\.\,\;\?\\'\\\\\+&%\$#\=~_\-]+))*\b!i
这是一个轻微的修改

我意识到这有点让人不知所措,但这在搜索URL时是意料之中的。不过,它与您列表中的所有内容都匹配


或者,您可以循环查看描述中的每个单词,并使用
parse_url()
查看单词的分解方式。我将把确定它是否是url的标准留给您。仍然有可能出现误报,但可以大大减少。结合Andrew提出的将可疑内容标记以进行审核的想法,这可能是一个可行的解决方案。

我会这样做,但会稍微扩展一下,这样在找到匹配的TLD后,我会在字符串中向后一点,并检查字符串,直到得到一个非url字符(如空格、换行符等)。虽然这并不能阻止人们做他们所做的事情,“example[dot]c0m”超链接已经被阻止了,但用户已经转向制作文本链接。我认识到我永远无法停止最坚定的链接器(示例[dot]c0m),但我想停止随意的示例。com另一个选项(取决于您的主要用户群以及他们的活动和合作水平)是国旗/投票按钮,它可以引起主持人的注意,或者在如此多的投票后隐藏/删除评论(或者两者兼而有之!-当然这可能需要更多的努力才能实现)参见。此链接可能无法解决您的问题,但您可能会发现答案中有一些有用的信息。查找URL(无论是否编码为www.place.com或任何其他方式)最有效的方法是使用人眼和大脑-尽可能让社区参与。@Code Jockey:将其添加到管道列表(com | edu | gov | | | ca | uk | travel)这也没有过滤掉很多URL缩写(bit.ly、goo.gl等)我还没有找到匹配URL的完美正则表达式。如果有人有,我很想看看。这样的表达式可以测试克雷超级计算机的极限,但我相信这在技术上是可能的-我只是吹毛求疵!我可以不使用URL缩写器。我只是想阻止公然的小便。例如,我们有一些东西艾克:“不要在这里买,省钱,直接来我们的商店www.douchebags.com”