使用 preg_replace_callback 将自定义标签替换为 html
Replace custom tags with html using preg_replace_callback
我正在尝试用我网站中的 html 标签替换自定义标签,如下所示:
[block-2] "Donec volutpat nibh sit amet libero ornare non laoreet arcu luctus. Donec id arcu quis mauris". [/block-2]
如果遇到上面的[block]标签,应该换成一些html标签(使用正则表达式),具体为:
<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);
您需要在您的模式中转义结束标记的反斜杠 ...[\/block...
。
所以完整的模式是(\[block-([0-9]+)\](.+)\[\/block-([0-9]+)\])
你实际上不需要使用 preg_replace_callback 功能,只需 preg_replace
就可以了。
\[(block-([0-9]+))\](.+?)\[\/\]
然后将匹配到的字符替换为
<blockquote class="tm-style"><span>\n\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"><span>'."\n".''."\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>
我正在尝试用我网站中的 html 标签替换自定义标签,如下所示:
[block-2] "Donec volutpat nibh sit amet libero ornare non laoreet arcu luctus. Donec id arcu quis mauris". [/block-2]
如果遇到上面的[block]标签,应该换成一些html标签(使用正则表达式),具体为:
<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);
您需要在您的模式中转义结束标记的反斜杠 ...[\/block...
。
所以完整的模式是(\[block-([0-9]+)\](.+)\[\/block-([0-9]+)\])
你实际上不需要使用 preg_replace_callback 功能,只需 preg_replace
就可以了。
\[(block-([0-9]+))\](.+?)\[\/\]
然后将匹配到的字符替换为
<blockquote class="tm-style"><span>\n\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"><span>'."\n".''."\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>