我有这个PHP代码:
$y = $_POST['message'];
$pre = htmlspecialchars($y, ENT_QUOTES);
$msg = str_replace("<br>", "<br>", $pre);
将所有转换后的&lt; br&gt;(&amp; lt; b&amp; gt;)替换回&lt; br&gt;。我试图用所有的链接(好吧,差不多)做同样的事情,就像在论坛中一样。实施例...
http://www.example.com
应该像这样包裹:
<a href="http://www.example.com">http://www.example.com</a>
如果它更容易,我显然更喜欢[URL] [/ URL]方法,同样,[IMG] [/ IMG]。
有人能指出我正确的方向吗?我一直在这里找几个小时,没有什么能满足我的需要:/
答案 0 :(得分:1)
一种非常简单的方法:
$input = '[URL]xxx[/URL]';
$url = explode('[URL]', $input);
$url = explode('[/URL]', $url[1]);
$url = '<a href="' . $url[0] . '"/>Link</a>';
echo $url;
有一些更好的方法可以做到这一点。也许使用正则表达式或preg_replace。
答案 1 :(得分:0)
这通常使用正则表达式完成,您可以在google链接正则表达式中获得一些示例和教程。但是如果$ _POST ['message']不是一个巨大的字符串并且不包含很多链接,你实际上可以在[URL]上爆炸,然后在explode()的数组结果中找到[/ URL]并计算链接长度。从那里你只需要附加锚标记和substr链接,因为你已经知道原始数组元素的长度。