You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

strip_tags处理前替换<h2>标签的代码失效问题求助

解决preg_replace不生效并结合strip_tags的方案

你的问题核心在于**preg_replace不会直接修改原变量**——它会返回处理后的新字符串,如果你不把这个返回值重新赋值给$desc,原变量根本不会发生变化。另外,你的第二个正则表达式还有语法问题:</h2>里的/需要转义,不然会被当成正则表达式的结束符,导致匹配失效。

我给你整理了修正后的完整代码:

$desc = get_post_meta($post_id , 'desc', true);
// 替换<h2>为空,必须将返回值重新赋值给$desc
$desc = preg_replace("/<h2>/", '', $desc);
// 替换</h2>为" - ",注意转义斜杠
$desc = preg_replace("/<\/h2>/", ' - ', $desc);
// 最后去除所有剩余HTML标签
$desc = strip_tags($desc);

如果想让代码更简洁,还可以把两个preg_replace合并成一个,用正则的分支匹配实现:

$desc = get_post_meta($post_id , 'desc', true);
// 一次匹配<h2>和</h2>,根据匹配内容返回对应替换值
$desc = preg_replace("/<h2>|<\/h2>/", function($match) {
    return $match[0] === '<h2>' ? '' : ' - ';
}, $desc);
$desc = strip_tags($desc);

这样处理后,既能正确替换目标标签,又能顺利去除其他所有HTML标签啦。

内容的提问来源于stack exchange,提问作者btgen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 22:27:49