通过PHP案例深入解读实现文章内容摘要
前言
相信很多开发者在开发一些社区论坛博客之类的项目时候,会遇到对文章内容进行截取,做成文章摘要的效果,但是在实现这个功能的时候,里面的知识点你又知道多少?你是否遇到过截取出现乱码的情况?这究竟是怎么一回事?下面我们来解读一下
首先,我们实现该功能的步骤如下:
1.去掉转移和HTML代码
$newContent = strip_tags(stripslashes($_POST['content']));
2.去掉两边多余的空格
$newContent = trim($newContent);
3.全局区配替换,去掉空格,将斜杆转义
$patternArr = array('/\s/','/ /');
$replaceArr = array('','');
$newContent = preg_replace($patternArr,$replaceArr,$newContent);
4.截取固定长度(内容,截取初始位置,截取长度,截取编码格式)
$newContent = mb_strcut($newContent,0,150,'utf-8');
上诉方法的函数解读:
PHP strip_tags() 函数
定义和用法:
strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。
注释:该函数始终会剥离 HTML 注释。这点无法通过 allow 参数改变。
注释:该函数是二进制安全的。
PHP preg_replace()函数
preg_replace函数执行一个正则表达式的搜索和替换。
语法:
混合preg_replace(混合$ pattern,混合$替换,混合$ subject [,int $ limit = -1 [,int&$ count]])
搜索主题中匹配模式的部分,以替换进行替换。
参数说明:
$ pattern:要搜索的模式,可以是字符串或一个字符串数组。
$ replacement:用于替换的字符串或字符串数组。
$ subject:要搜索替换的目标字符串或字符串数组。
$ limit:可选,对于每个模式用于每个主题字符串的最大可替换次数。默认是-1(无限制)。
$ count:可选,为替换执行的次数。
返回值:
如果subject是一个数组,preg_replace()返回一个数组,其他情况下返回一个字符串。
如果匹配被查找到,替换后的主体被返回,其他情况下返回没有改变的主题。如果发生错误,返回NULL。
PHP mb_strcut()函数
这里是重点啦~上面的功能实现我们为什么使用mb_substr,而不是substr??
因为substr、mb_substr、mb_strcut这三个函数都用来截取字符串,但是他们所不同的是:substr是最简单的截取,无法适应中文,截取中文出现乱码现象;mb_substr是按字符来截取字符串,而mb_strcut是按字节来截取字符串,截取中文都不会产生半个字符的现象,也就不会出现乱码现象。
语法:
substr/mb_substr/mb_strcut(操作对象,起始位置,截取数量,[字符集])
这三个函数的前三个参数完全一致,即:
第一个参数是操作对象
第二个参数是截取的起始位置
第三个参数是截取的数量
但是mb_substr和mb_strcut还有第四个参数:第四个参数可以根据不同的字符集进行设置
举例:
<?php
header("content-type:text/html;charset=utf-8");
$str = '魔镜魔镜,告诉我世界上最帅的男人是谁?';
echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8');
echo "<br>";
echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
?>
输出结果如下:
mb_substr:魔镜魔镜,告
mb_strcut:魔镜
额外补充知识点:
1.在UTF-8编码下各种符号占用的字节?
一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节。
2.什么是字节?
字节是指一小组相邻的二进制数码。通常是8位作为一个字节。它是构成信息的一个小单位,并作为一个整体来参加操作,比字小,是构成字的单位。
阅读更多- php通过ajax实现双击table修改内容
- PHP学习笔记:通过curl实现采集网站内容
- 如何实现在文章模块LIST页面調用文章内容摘要
- php实现获取文章内容第一张图片的方法
- 通过案例深入探讨PHP中的内存管理问题
- php实现获取文章内容第一张图片的方法
- PHP下通过file_get_contents\curl的方法实现获取远程网页内容(别忘了还有PhpRPC)
- php取文章内容前50字摘要
- php实现获取文章内容第一张图片的方法【转】
- 赵雅智_android通过内容提供者实现电话薄显示更新删除案例
- php实现自动获取生成文章主题关键词功能的深入分析
- PHP实现通过正则表达式替换回调的内容标签
- [转]通过案例深入探讨PHP中的内存管理问题
- php实现获取文章内容第一张图片的方法【转】
- [转]通过案例深入探讨PHP中的内存管理问题
- php通过ajax实现双击table修改内容
- php 实现文章摘要功能,截取字符串的长度函数
- PHP文章通过主体内容截取图片和简介
- PHP实现通过正则表达式替换回调的内容标签
- PHP实现长文章分页实例代码(附源码)