PHP - 从消息中删除http/www(主机域除外)以禁用可点击链接

Non*_*der 9 html php url-parsing input-sanitization

我有一个简单的留言板,让我们说:mywebsite.com,允许用户发布他们的消息.目前,董事会使所有链接都可以点击,即.当有人发布以:

http://, https://, www., http://www., https://www.
Run Code Online (Sandbox Code Playgroud)

然后脚本自动将它们作为链接(即添加A href ..标签).

问题 - 垃圾邮件太多了.所以我的想法是自动删除上面的http | s/www,这样这些就不会成为"可点击的链接".但是,我想让海报链接到我网站中的页面,即.当消息包含mywebsite.com的链接时,不要删除http | s/www.

我的想法是创建两个数组:

$removeParts = array('http://', 'https://', 'www.', 'http://www.', 'https://www.');

$keepParts = array('http://mywebsite.com', 'http://www.mywebsite.com', 'www.mywebsite.com', 'http://mywebsite.com', 'https://www.mywebsite.com', 'https://mywebsite.com');
Run Code Online (Sandbox Code Playgroud)

但我不知道如何正确使用它们(可能str_replace可能会以某种方式工作).

以下是发布之前和发布之后的$ message示例:

$ message之前:

你好世界,感谢http:// mywebsite/about我学到了很多东西.我发现你有http://www.bing.com,https://google.com/search和一些www.spamwebsite.com/refid=spammer2.

$ message后:

你好世界,感谢http://mywebsite.com/about我学到了很多东西.我在bing.com,google.com/search和一些spamwebsite.com/refid=spammer2上找到了你.


请注意,用户在帖子表单中输入明文,因此脚本只能使用此明文(而不是href等).

Non*_*der 0

对于任何寻找答案的人 - 我发布了一个解决问题的相关(更具体)问题:PHP - 从不以特定单词开头的字符串中删除单词(http | https | www | .com | .net)