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 = '&lt;p&gt;
  &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;img src=&quot;/Upload/image/2018-02-09/20180209132853_70302.gif&quot; alt=&quot;&quot; /&gt; 
&lt;/p&gt;
&lt;p style=&quot;color:#6C6969;font-family:&amp;quot;font-size:14px;text-align:justify;background-color:#FFFFFF;&quot;&gt;
  彭于晏真得是用尽了全力,他苦练了八个月,几乎每天都进行10个小时以上的体操练习,为了保持八块腹肌的身材,他只吃水煮餐,不加任何调料。
&lt;/p&gt;
&lt;p style=&quot;color:#6C6969;font-family:&amp;quot;font-size:14px;text-align:justify;background-color:#FFFFFF;&quot;&gt;
  &lt;br /&gt;
&lt;/p&gt;';

如果需要去除html标签时,需要用htmlspecialchars_decode函数处理一下,在使用strip_tags函数去除html标签。

猜你喜欢

转载自www.cnblogs.com/North-South/p/9021022.html
今日推荐