2013-06-02 55 views
0

我有此PHP代码之间裹链接:PHP:从字符串<a></a>标签

$y = $_POST['message']; 

$pre = htmlspecialchars($y, ENT_QUOTES); 

$msg = str_replace("&lt;br&gt;", "<br>", $pre); 

即替换所有转换<BR>的(& LT,B & GT)回<BR> 。而且我试图对所有链接进行同样的处理(几乎),就像在论坛中一样。例如...

http://www.example.com 

应缠这样的:

<a href="http://www.example.com">http://www.example.com</a> 

如果是比较容易的,我显然会更喜欢[URL] [/ URL]的方法,同样,[IMG] [/ IMG]。

难道有人指着我正确的方向吗?我一直在寻找小时在这里,并没有什么调整,以我的需要:/

+0

看看这个: http://stackoverflow.com/questions/4217406/php-add-link-to-a-url-in-a-string – scraaappy

回答

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。

+0

太棒了!谢谢!完美的作品!我可以使用它与图像!多谢! – MoeSzislak

+0

:)但永远不会忘记安全!你永远不知道用户会输入什么;) –

0

这通常是使用正则表达式,在那里你可以在google链接正则表达式完成,你会得到一大堆的例子和教程。然而,如果$ _POST ['message']不是一个巨大的字符串,并且不包含大量的链接,你可以在[URL]上实际爆炸,然后在explode()的数组结果中找到[/ URL]链接长度。从那里你只需要附加锚标签和substr链接,因为你已经知道原始数组元素的长度。

+0

这是不是一个巨大的字符串,但无论哪种方式,我不知道如何将它限制为少量字符(500,ex):S(在PHP方面,因为我可以用JavaScript轻松验证它)。而且我不是一个伟大的编码器自己,在PHP草皮,所以我就买了汗水的小心肝例如**帕特里克的browers **做:) – MoeSzislak

+0

这基本上是我建议,但在编写代码,而不是:d没关系如果你选择了做这种方式,但你应该知道的事实,这是非常低效的,不应该有巨大的文本或大量的请求使用。祝你好运! :P –

相关问题