strip_tags处理前替换<h2>标签的代码失效问题求助
你的问题核心在于**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
相关产品推荐
相关产品推荐

