2010-07-03 59 views
0

我有一个留言本,我想网站地址转换以下[link]www.yahoo.com[/link]<a>...如何做,在str_replace函数

那么它是如何做到这一点str_replace函数?

+0

我不明白什么是你想做的事情。你能多解释一下吗? – 2010-07-03 19:56:33

+0

替换[link] www.yahoo.com [/ link]至click here alkitbi 2010-07-03 19:58:46

+1

您能否提供一些更精确的输入和输出值?你想将“[link] www.yahoo.com [/ link]”转换为“www.yahoo.com”吗? – 2010-07-03 19:59:44

回答

2

str_replace不足以完成此操作。您可以使用preg_replace

$res = preg_replace('#\\[link\\](?![^:]+script:)([^:<"\\[]+:)?([^<"\\[]+)\\[/link\\]#e', 
        "'<a href=\"'.('\\1'?'\\1':'http://').'\\2\">click here</a>'", 
        $input); 

例子:http://www.ideone.com/lTknX

但最好使用BBCode parser

+0

+1使用BBCode分析器的想法。如果您尝试自己实现这个功能,那么您将遇到在实现完整的基于状态机的解析器之前无法工作的边界案例。 – 2010-07-03 20:46:58

+0

链接的BBCode分析器是一个* PECL扩展*,并不是PHP内置的。 – Charles 2010-07-03 21:12:40

0

这应该为你做的:

$string = "[link]www.yahoo.com[/link]"; 

echo preg_replace("/\[link\](.*)\[\/link\]/", "<a href='$1'>click here</a>", $string);