0

嗨,我有一个小插件系统,我使用这个短代码,例如:{google}stackoverflow{/google}

我希望它用指向谷歌搜索链接的链接替换该部分,在这种情况下:stackoverflow

我该怎么做?我有这个,但它不起作用:

preg_replace('#{google}([^{]+){/google}#i', '<a href="http://www.google.com?s=$1">$1</a>', $content);
4

4 回答 4

1

您需要转义大括号,即使用\{and \}

preg_replace('#\{google\}([^{]+)\{/google\}#i', '<a href="http://www.google.com?s=$1">$1</a>', $content);
于 2012-08-22T19:46:18.917 回答
1

这里的关键是使用非贪婪运算符,并转义所有内容。

preg_replace('#\{google\}(.*?)\{/google\}#i','<a href="http://www.google.com?s=$1">$1</a>', $content);
于 2012-08-22T19:46:56.750 回答
1

您的正则表达式无效。尝试这个:

preg_replace('#\{google\}[^\{]+\{/google\}#i', '<a href="http://www.google.com?s=$1">$1</a>', $content);
于 2012-08-22T19:47:22.407 回答
-1
preg_replace('#{google}([^{]+){\/google}#i', '<a href="http://www.google.com?s=$1">$1</a>', $content);
于 2012-08-22T19:47:59.500 回答