php 截取文章内容生成纯文本摘要(去除html标签)
Posted north-south
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 截取文章内容生成纯文本摘要(去除html标签)相关的知识,希望对你有一定的参考价值。
废话少说,直接上代码:
$str = ‘<p>
我是需要保留的文字
</p>
<p>
<br />
</p>
<p>
alsdkjf;laskjd;flasj;
</p>
<p>
asdjfasjd;lkafsj;lfdkj
</p>
<p>
aksdjfl;ak
</p>‘;
$subject = strip_tags($str);//去除html标签
$pattern = ‘/\\s/‘;//去除空白
$content = preg_replace($pattern, ‘‘, $subject);
//需要注意的是,如果是截取汉字的时候,mb_substr需要加UTF-8参数,否则会出现乱码
echo mb_substr($content, 0, 40,"UTF-8"); //截取40个汉字
在此,提一下htmlspecialchars函数和strip_tags函数的区别:
$str="<a href=‘http://www.manongjc.com‘>码农教程‘\\"</a>";
echo htmlspecialchars($str);
echo "<br/><br/>";
echo strip_tags($str);
浏览器输出结果:
审查元素你会发现:
从结果可以看出htmlspecialchars() 和strip_tags的区别如下:
区别一:
strip_tags函数使用来去除HTML标签的,而htmlspecialchars并没有去除html标签,只是把标签转换为HTML实例,所以二者之间最大的区别是一个是删除掉HTML标签,一个是将html标签转换为其他字符。
区别二:
如果需要去除HTML标签的字符串里面的标签原来就有错,例如少了大于的符号,在使用strip_tags函数会传回错误,而htmlspecialchars不会有错误出现,依然后转换为HTML实体。
区别三:
在防止XSS攻击时,一般建议使用htmlspecialchars函数,因为strip_tags虽然可以删除HTML标签,但是它不会删除"或‘。因此就算你使用了
strip_tags,仍然需要使用htmlspecialchars函数来过滤掉"或‘
在表单提交或用户留言板里,如果你希望数据原始输出带浏览器,那么请使用htmlspecialchars函数,不要使用strip_tags函数。
另外,在测试的时候发现了个很有趣的问题,在数据库里存的内容值是这样的:
$str = ‘<p>
<br />
</p>
<p>
<img src="/Upload/image/2018-02-09/20180209132853_70302.gif" alt="" />
</p>
<p style="color:#6C6969;font-family:&quot;font-size:14px;text-align:justify;background-color:#FFFFFF;">
彭于晏真得是用尽了全力,他苦练了八个月,几乎每天都进行10个小时以上的体操练习,为了保持八块腹肌的身材,他只吃水煮餐,不加任何调料。
</p>
<p style="color:#6C6969;font-family:&quot;font-size:14px;text-align:justify;background-color:#FFFFFF;">
<br />
</p>‘;
如果需要去除html标签时,需要用htmlspecialchars_decode函数处理一下,在使用strip_tags函数去除html标签。