需要更好的我的正则表达式完全删除句子而不是删除链接

时间:2012-07-22 10:06:12

标签: regex url hyperlink

所以,在一些可爱的朋友冲浪stackoverflow的帮助之后,我得到了一个正则表达式来删除人们发布的链接。现在,我想我想找到一个删除整个帖子的帖子,也许用“”,所以我的表格不允许这个帖子。 (而不是嘿,请在[LINK REMOVED]查看我的网站。哪个很棒,但如果它删除整个句子而不仅仅是链接可能会更好。)我对正则表达式atm很糟糕,所以任何帮助都会非常感激!

这是我现在的正则表达式:

$a = $_POST['msge'];
$b = preg_replace('%[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)%', '[LINK REMOVED]', $a);

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

有更好的方法可以在字符串中查找链接,这里是example相关问题中给出的Perl中的this。如果您已经开始使用正则表达式,this相关问题中提到了another,看起来比您目前正在尝试的更有希望。

如果你想在给定链接的情况下替换整个句子,你可以使用以下内容:

[^.|^!|^?]*(link)[^.|^!|^?]*[.|!|?]

显然,您希望将链接替换为链接模式匹配。

主观上我还建议从人们发布的内容中删除整个句子可能有点奇怪,因为它可能会改变帖子的整个含义。如果您的主要目的是删除链接(例如,为了防止垃圾邮件反向链接),您可能只想通过将其替换为明显类似-LINK之类的内容来模糊链接。