我试图在我的网站上用html标签替换自定义标签,如下所示:
[block-2] "Donec volutpat nibh sit amet libero ornare non laoreet arcu luctus. Donec id arcu quis mauris". [/block-2]
如果遇到上面的[block]标签,它应该被一些html标签替换(使用regexp),具体来说:
<blockquote class="tm-style2"><span>
"Donec volutpat nibh sit amet libero ornare non laoreet arcu luctus. Donec id arcu quis mauris".
</span></blockquote>
我尝试过以下但是没有用。请帮忙:
$article_text = preg_replace_callback(
"(\[block-([0-9]+)\](.+)\[\/block-([0-9]+)\])",
create_function('$p','return "<blockquote class=\"tm-style".$p[1]."\"><span>".$p[2]."</span></blockquote>";'), $article_text);
答案 0 :(得分:1)
您实际上不需要使用preg_replace_callback函数,只需preg_replace
即可。
\[(block-([0-9]+))\](.+?)\[\/\1\]
然后用
替换匹配的字符<blockquote class="tm-style\2"><span>\n\3\n</span></blockquote>
$re = "~\\[(block-([0-9]+))\\](.+?)\\[\\/\\1\\]~m";
$str = "[block-2] \"Donec volutpat nibh sit amet libero ornare non laoreet arcu luctus. Donec id arcu quis mauris\". [/block-2]";
$subst = '<blockquote class="tm-style\2"><span>'."\n".'\3'."\n".'</span></blockquote>';
$result = preg_replace($re, $subst, $str);
echo $result;
<强>输出:强>
<blockquote class="tm-style2"><span>
"Donec volutpat nibh sit amet libero ornare non laoreet arcu luctus. Donec id arcu quis mauris".
</span></blockquote>
答案 1 :(得分:0)
您需要在模式...[\/block...
中转义结束标记的反斜杠。
所以完整模式是(\[block-([0-9]+)\](.+)\[\/block-([0-9]+)\])