在我的网站中,我试图用html标签替换定制的标签,如下所示:
[block-2] "Donec volutpat nibh sit amet libero ornare non laoreet arcu luctus. Donec id arcu quis mauris". [/block-2]如果遇到上述块标记,则应该用一些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); 发布于 2015-02-09 13:18:59
您实际上不需要使用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>发布于 2015-02-09 13:08:50
您需要在模式...[\/block...中避开结束标记的反斜杠。
所以完整的模式是(\[block-([0-9]+)\](.+)\[\/block-([0-9]+)\])
https://stackoverflow.com/questions/28410529
复制相似问题