PHP preg_replace - www或http://

Mat*_*hew 3 php url spaces preg-replace

真的卡在看似简单的事情上.我有一个聊天框/ shoutbox,可能会输入任意URL.我想找到每个单独的URL(用空格分隔)并将其包装在标签中.

示例:=Harry you're a http://google.com wizard!Harry you're a $lhttp://google.com$l wizard!

示例:=Harry you're a http://www.google.com wizard!Harry you're a $lhttp://www.google.com$l wizard!

示例:Harry you're a www.google.com wizard!=Harry you're a $lwww.google.com$l wizard!

对不起,如果这是一个愚蠢的问题; 我只是想让一些东西工作,我不是PHP专家:(

Bry*_*yan 13

有一篇关于URL正则表达式的有趣文章.在PHP中,这看起来像:

$pattern = "/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/";

$inp = "Harry you're a http://google.com wizard!";
$text = preg_replace($pattern, "[supertag]$1[/supertag]", $inp);
Run Code Online (Sandbox Code Playgroud)

当然[supertag],[/supertag]用适当的值替换.