PHP从内容中自动获取文章摘要

简介: 文章一般都会有摘要需要维护,一方面是 seo,另一方面还可以满足一些美观的要求,就像这样:PHP从内容中自动获取文章摘要文章摘要经常希望后台维护好内容之后,摘要也能能自动生成一个。

文章一般都会有摘要需要维护,一方面是 seo,另一方面还可以满足一些美观的要求,就像这样:

img_7a4426d3a3781ec3f39711505b472b90.jpe
PHP从内容中自动获取文章摘要

文章摘要

经常希望后台维护好内容之后,摘要也能能自动生成一个。

原理就是过滤富文本框生成的 HTML 代码,网上找了很多方法都不爽,要么是功能没达到要求,要么是复杂的没法修改。

那就自己上吧,虽然看起来简单粗暴了一点,但是简单实在,以后还能自己再优化下。

function getDescriptionFromContent($content, $count)
{
    $content = preg_replace("@<script(.*?)</script>@is", "", $content);
    $content = preg_replace("@<iframe(.*?)</iframe>@is", "", $content);
    $content = preg_replace("@<style(.*?)</style>@is", "", $content);
    $content = preg_replace("@<(.*?)>@is", "", $content);
    $content = str_replace(PHP_EOL, '', $content);
    $space = array(" ", " ", "  ", " ", " ");
    $go_away = array("", "", "", "", "");
    $content = str_replace($space, $go_away, $content);
    $res = mb_substr($content, 0, $count, 'UTF-8');
    if (mb_strlen($content, 'UTF-8') > $count) {
        $res = $res . "...";
    }
    return $res;
}

这代码实在的不谈了,由于是插入时执行一次的操作,所以完全也没考虑效率,就是简单的替换、替换、替换...

用标签识别,先把 JS 替换掉:

$content = preg_replace("@<script(.*?)</script>@is", "", $content);

里面的@是定界符,这个可以随意指定,这里用@比较好。

is 是修饰符,意思是不区分大小写,并且让圆点能取代所有字符,包括换行符。

测试发现还是会换行,再替换:

$content = str_replace(PHP_EOL, '', $content);

在 windows、linux、mac 里面的换行符都不一样,好在 PHP 有个预定义常量PHP_EOL可以通用。

这都不行,有些顽固的空格还是在,再来:

$space = array(" ", " ", " ", " ", " ");
$go_away = array("", "", "", "", "");
$content = str_replace($space, $go_away, $content);

替换所有可能存在的情况,世界终于清静了。

最后就是mb_substr,截取中文用的。

有个特殊的地方就是截取的字数只能是3的倍数,不然有时候会出现某个字被截了一半的情况。

END

目录
相关文章
|
17天前
|
设计模式 PHP
php设计模式--装饰模式(七)装饰模式完成文章编辑
php设计模式--装饰模式(七)装饰模式完成文章编辑
10 0
|
JSON PHP 数据安全/隐私保护
PHP RSA密文过长加密解密,PHP RSA证书大小自动适配,PHP RSA分段加密
PHP RSA密文过长加密解密,PHP RSA证书大小自动适配,PHP RSA分段加密
485 0
php-获取txt文件内容并转换成数组
php-获取txt文件内容并转换成数组
89 0
php-获取txt文件内容并转换成数组
|
JavaScript PHP
phpQuery,php爬虫类库,像jQuery一样轻松采集内容
phpQuery,php爬虫类库,像jQuery一样轻松采集内容
177 0
|
PHP
php自动将数字字符串转换为int / float
php自动将数字字符串转换为int / float
69 0
|
JavaScript 前端开发 Java
JavaScript、PHP、Python、Java内容比较和地址比较
JavaScript、PHP、Python、Java内容比较和地址比较
JavaScript、PHP、Python、Java内容比较和地址比较
|
API PHP
PHP对接百度API访问自动提交收录SEO
PHP对接百度API访问自动提交收录
492 0
PHP对接百度API访问自动提交收录SEO
|
算法 测试技术 PHP
PHP将部分内容替换成星号
在最近的项目中,会碰到到某人的手机号码隐藏中间几位,身份证号码只显示末尾4位的需求。当时一开始是网上搜索了一下,看到有人是用substr_replace这个函数来替换的,后面我也用了这个函数,但在用的时候不是很好用。
PHP将部分内容替换成星号