preg_replace shortcode


preg_replace shortcode

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

我希望它将该部分替换为谷歌搜索链接的链接,在这种情况下:堆叠式

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

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

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

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

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

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

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

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