导语:一般来说,我们可以使用strip_tags来去除html的标签,不过,叶子直接使用这个函数的时候,出现了小问题。测试环境和正式环境的get_the_archive_description返回结果不一样。测试环境的返回结果没有执行do_shortcode,可以先执行strip_tags,然后再执行do_shortcode。正式环境的返回结果执行了do_shortcode,当在正式环境中使用strip_tags的时候,所有的html标签都被去掉了。
去除头尾的p标签
需要去除头尾p标签的原因是它会造成这个主题排版的错乱。我们可以使用ltrim和rtrim来去除头尾的p标签。
$content ='<p>sss</p>'; //删除头的P标签 $content =ltrim($content,'<'); $content =ltrim($content,'p'); $content =ltrim($content,'>'); //删除尾的P标签 $content =rtrim($content,"\n"); $content =rtrim($content,">"); $content =rtrim($content,"p"); $content =rtrim($content,"/"); $content =rtrim($content,"<");
但使用trim有一个问题如果开头不是P标签而是其他标签的时候,会把尖括号也去掉,那么我们需要判断开头是否有P标签。
如果希望不判断,那么我们可以使用preg_replace函数来除去标签。
$content ='<p>sss</p>'; $content = preg_replace('/^<p>([\n\r\s\S]*)<\/p>[\n\r\s]*$/i', '$1', $content); $content = preg_replace('/^<p>([\n\r\s\S]*)[\n\r\s]*$/i', '$1', $content); $content = preg_replace('/^([\n\r\s\S]*)<\/p>[\n\r\s]*$/i', '$1', $content);
利用正则表达式做了三次查找替换,首先找头尾有完整P标签的,如果没有找到,再找头部是否存在不完整P标签的,最后,再找尾部是否存在不完整P标签的。
结束
这是叶子在开发主题过程中遇到的一个小问题,可能大家不会遇到,但因为遇到了,所以把过程写出来和大家一起讨论。