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标签。

原文地址:https://www.cnblogs.com/North-South/p/9021022.html

时间: 2024-08-13 02:56:25

php 截取文章内容生成纯文本摘要(去除html标签)的相关文章

wordpress调用文章摘要,若无摘要则自动截取文章内容字数做为摘要

以下是调用指定分类文章列表的一个方法,作者如果有填写文章摘要则直接调用摘要:如果文章摘要忘记写了则自动截取文章内容字数做为摘要.这个方法也适用于调用description标签 <ul> <?php $args=array( 'cat' => 1, // 分类ID 'posts_per_page' => 10, // 显示篇数 ); query_posts($args); if(have_posts()) : while (have_posts()) : the_post();

PHP截取并生成纯文本字符串

php截取并生成纯文本字符串.最近使用文本编辑器保存的内容中有html,css以及js标记,但是我只想截取前面一部分纯文本内容显示摘要,这里直接上代码,如下: /**  * PHP清除html.css.js格式并去除空格的PHP函数,并具有截取UTF-8字符串的作用  */ function cutstr_html($string, $sublen){   $string = strip_tags($string);   $string = preg_replace ('/\n/is', '',

dedecms文章内容中加入网站地址

说明:东西是死的,人是活,对于使用dedecms来建站的朋友来说,更应该灵活一些,学会变通一些.    今天做网站,客户要求文章内容中必须带有本网站的网址,经过思考,代码如下: 在每篇文章的第200个字符后加上 网站网址,然后连接剩下的文章内容 {dede:field.body runphp='yes'} $a=strlen("@me")-200; @me=strlen(@me)>200?cn_substr(@me,200)."http://www.software8.

用Dedecms5.7的arclist标签调用文章内容

arclist标签调用文章内容 首先大家都知道在Dedecms中,list标签是可以调用文章内容的,调用格式就不再此冗述了.从我个人来说,我非常不喜欢用list标签调 用,有可能我会尽量使用arclist标签来调用,原因就是arclist功能很强大.我最喜欢用的就是arclist标签中的limit=’ ‘,当然row=’ ‘同样很科学.因此我总是希望arclist足够强大到可以实现我的网站中的各种功能.比如列表页调用文章内容. 用Dedecms中的arclist标签也是可以在列表页调用文章内容的

TensorFlow文本摘要生成 - 基于注意力的序列到序列模型

1 相关背景 维基百科对自动摘要生成的定义是, "使用计算机程序对一段文本进行处理, 生成一段长度被压缩的摘要, 并且这个摘要能保留原始文本的大部分重要信息". 摘要生成算法主要分为抽取型(Extraction-based)和概括型(Abstraction-based)两类. 传统的摘要生成系统大部分都是抽取型的, 这类方法从给定的文章中, 抽取关键的句子或者短语, 并重新拼接成一小段摘要, 而不对原本的内容做创造性的修改. 这类抽取型算法工程上已经有很多开源的解决办法了, 例如Git

使用TextRank算法为文本生成关键字和摘要

TextRank算法基于PageRank,用于为文本生成关键字和摘要.其论文是: Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004. 先从PageRank讲起. PageRank PageRank最开始用来计算网页的重要性.整个www可以看作一张有向图图,节点是网页.如果网页A存在到网页B的链接,那么有一条从网页A指向网页B的有向

PHP提取富文本字符串中的纯文本,并进行进行截取

/** * 提取富文本字符串的纯文本,并进行截取; * @param $string 需要进行截取的富文本字符串 * @param $int 需要截取多少位 */ public static function StringToText($string,$num){ if($string){ //把一些预定义的 HTML 实体转换为字符 $html_string = htmlspecialchars_decode($string); //将空格替换成空 $content = str_replace

jQuery截取字符串、日期字符串转Date、获取html中的纯文本

jQuery截取字符串.日期字符串转Date.获取html中的纯文本. var com = com || {}; (function ($, com) { /* * 截取字符串 * @param str:要截取的字符串 * @param len:保留多少字符 * @param symbol:超过之后字符串末端要添加的字符 */ com.cutStr = function (str, len, symbol) { if (symbol == undefined) { symbol = "...&q

WordPress批量修改文章内容、URL链接、文章摘要

通过SQL语句来批量修改wordpress博客内容,文章中所有语句都使用默认的wp_表前缀,如果您的数据表前缀不是wp_则需要在语句中作相应更改. 方法/步骤 批量修改文章内容 如果您想替换之前写过的所有文章中的某些内容,如更换博客的名称.更换博客的网址.更换文章配图的链接等,您可以使用以下SQL语句: UPDATE wp_postsSET post_content = REPLACE( post_content,'旧的博客名', '新的博客名' ); 该语句的功能是将所有文章中的“旧的博客名”