phpcms程序的评论列表中,会将所有的对评论的回复内容直接存储进数据库中的content字段,这样会使一些含有html标签或其他字符的内容在调用时直接显示出来,造成界面错位或乱码。
那么我们该怎样在不修改phpcms系统的php源码情况下,修复这个问题呢?
方法一、直接在评论列表模板中将对评论的回复功能去除
代码如下:
{pc:get sql=”select * from 数据表前缀_comment_data_1 where reply=0 and status=1 order by creat_at desc” num=”9″}
{loop $data $r}
{$r[username]}:{str_cut($r[content],300,’…’)}
{/loop}
{/pc}
方法二、由于phpcms是使用php代码制作的,我们可以直接使用php代码中的preg_replace函数,通过正则来过滤内容中的html标签
调用方法如下:
{pc:get sql=”select * from 数据表前缀_comment_data_1 where status=1 order by creat_at desc” num=”9″}
{loop $data $r}
{php $r[content]=preg_replace(“‘<div class=\”content\”>.*?<span></span>’si”,””,$r[content]);}
{$r[username]}:{$r[content]}
{/loop}
{/pc}
方法三、使用php中常用的strip_tags()函数
strip_tags函数能够去除指定字符串中的常见的html标签元素,我们可以用它来直接对content字段中的数据进行过滤
调用方法也很简单:
直接将
{str_cut($r[content],300,’…’)}
修改为:
{str_cut(strip_tags($r[content]),300,’…’)}
这样就可以在仅仅修改模板的情况下,过滤评论回复中的html标签了。