您的位置:首页 > 编程语言 > PHP开发

通过PHP案例深入解读实现文章内容摘要

2018-12-01 11:26 246 查看

前言

相信很多开发者在开发一些社区论坛博客之类的项目时候,会遇到对文章内容进行截取,做成文章摘要的效果,但是在实现这个功能的时候,里面的知识点你又知道多少?你是否遇到过截取出现乱码的情况?这究竟是怎么一回事?下面我们来解读一下

首先,我们实现该功能的步骤如下:

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位作为一个字节。它是构成信息的一个小单位,并作为一个整体来参加操作,比字小,是构成字的单位。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: