下载鸥 > 网站下载 > 开发教程 > PHP

php分割中文字符源码分享与可行性分析

353 2021-05-13 22:43:56

收藏
php分割中文字符源码分享与可行性分析
php分割中文字符,之前计划的是可用于搜索结果、tag结果关键词标红。但在实际应用中发现存在bug,这里分享一段php分割中文字符的源码,存在的bug在文后说明。

php分割中文字符源码分享与可行性分析

php分割中文字符源码

// 中文切割
function mbStrSplit ($string, $len=1) {
    $start = 0;
    $strlen = mb_strlen($string);
    while ($strlen) {
        $array[] = mb_substr($string,$start,$len,"utf8");
        $string = mb_substr($string, $len, $strlen,"utf8");
        $strlen = mb_strlen($string);
    }
    return $array;
}
 

php分割字符在实际应用中的问题

1、下载鸥尝试了通过php分割中文字符并进行搜索结果关键词匹配标红,从中文结果来看,是成功了。但存在一个问题:如果关键词/tag存在英文字符时,会因为分割导致页面的html代码被一起分割了,最终导致存在英文字符的页面全部乱码。既然英文字符乱码,那么中文页面的alt、title属性应该是同样被截断了。因此,中文字符分割匹配从我本人目前的技术水平来看,还不可行。要做分割匹配,绕不开问题如下:
需要避开html标签
需要避开css样式
需要避开图片的alt、title属性
需要避开input等标签的placeholder、value等属性

2、如果是直接作用到列表页模板,则该方案还是可行的。参考源码如下,但在实际应用中发现对英文tag的兼容不够好,日后有时间再做优化。
$tagsplit=mbStrSplit($tagname);
foreach ($tagsplit as $key){
    if (!strpos($title, $tagname)){
      $key=strtolower($key);
      $title=str_replace($key,"<font>$key</font>",$title);
    }
    if (!strpos($smalltext, $tagname)){
      $key=strtolower($key);
      $smalltext=str_replace($key,"<font>$key</font>",$smalltext);
    }
}

3、换个角度考虑,则分词匹配的可行性要远高于字符分割匹配。

4、如果分割匹配的目的是其他的,如搜索(仅为搜索,并非标红),则源码可以考虑使用。

本文地址:https://xzo.com.cn/develop/php/948.html

有帮助,很赞!

信息来源:下载鸥
导出教程 下载word版教程
发表评论 共有条评论
关于PHP

PHP是一种服务器端、跨平台、html嵌入式的脚本语言,其功能十分强大、入门简单。在过去,民间一直有说法称“PHP是最好的编程语言”,是PHP开发者对自身所使用语言的肯定。

PHP曾是最主流的网站web开发语言之一,现在也依然十分流行。

推荐PHP开发教程
PHP判断某个时间戳(打卡、点餐、签到等)是不是今天记录的
PHP判断某个时间戳(打卡、点餐、签到等)是不是今天记录的

php判断时间戳是不是今天的实现方法:首先创建一个PHP示例文件;指定一个时间,并...

15 1060
str_replace怎样一次性替换多个值(数组)?
str_replace怎样一次性替换多个值(数组)?

我们知道,str_replace是可以执行替换命令的,但一般是用于一对一替换,这个很好...

1 381
一句话防御首页带问号?的垃圾链接分权重
一句话防御首页带问号?的垃圾链接分权重

任何站点但凡有点流量就会遇到这种情况:首页被人用问号传了参数,恰恰还被收录...

1 436
当缓存文件大于4KB,不能用cookie时的替代方案就是session
当缓存文件大于4KB,不能用cookie时的替代方案就是session

鸥哥最近在开发一个项目,出于对用户隐私的保护,数据一概不能存储到数据表,而是...

1 380
宝塔Nginx免费防火墙提示post参数(post_max_size)值长度超过20w已被系统拦截怎么办?
宝塔Nginx免费防火墙提示post参数(post_max_size)值长度超过20w已被系统拦截怎么办?

页面提交post请求后被宝塔防火墙拦截,查看日志显示错误:参数值长度超过20w已...

1 567
什么是高并发,与CPU,内存,分布式有什么关系
什么是高并发,与CPU,内存,分布式有什么关系

我们在网站开发的过程中经常会接触到高并发这个概念,但高并发到底是什么,具体...

1 328
PHP的for循环为什么只执行了一次就停止了?
PHP的for循环为什么只执行了一次就停止了?

今天有朋友咨询鸥哥,说php写的for循环本来至少要循环9次,但却只执行了一次就...

1 352
怎样用php批量删除文件或者文件夹?
怎样用php批量删除文件或者文件夹?

在网站建成后的维护与优化阶段,我们会面临无用栏目/数据处理的问题。量小的...

0 322
推荐插件
帝国cms百度AI图像去雾api接口对接插件
帝国cms百度AI图像去雾api接口对接插件

通过本插件,可以实现帝国cms网站对接百度云api实现图像去雾的功能。经过实际...

0 374
帝国cms多栏目多数据表自动审核推送插件
帝国cms多栏目多数据表自动审核推送插件

本插件基于帝国cms帝国cms每日自动审核插件,在自动审核指定条数信息的基础上...

0 804
帝国cms访问统计ip地址链接与封禁插件下载
帝国cms访问统计ip地址链接与封禁插件下载

下载鸥开发了这款帝国cms封禁ip插件,自动记录访问情况,让我们可以更快的识别...

0 897
帝国cms纳米数据接口(足球比赛中最新数据)
帝国cms纳米数据接口(足球比赛中最新数据)

帝国cms 对接纳米数据(www.nami.com)接口,本接口主要接收、整理足球比赛实时数...

0 191
帝国cms网站会员登录与退出历史记录日志插件
帝国cms网站会员登录与退出历史记录日志插件

帝国cms默认只有上次登录时间与ip,没有一个记录清单,所以今天,我们分享这个帝...

0 284
帝国cms智能自动审核按星期几审核指定栏目带推送插件
帝国cms智能自动审核按星期几审核指定栏目带推送插件

采集站的必备资源是自动审核,要做到日收录也离不开定时发布。而本插件的自动...

0 1154
帝国cms批量添加后台用户插件
帝国cms批量添加后台用户插件

使用帝国cms的企业用户、新闻资讯类站点的用户很多,此类站点很多时候需要有...

0 598
帝国cms自动生成文章新闻目录插件下载
帝国cms自动生成文章新闻目录插件下载

用户体验是我们的需求,百度蜘蛛的认可更是我们的需求。毕竟,没有收录排名,何来...

0 988
客服QQ:341553759
扫码咨询 常见问题 >
官方交流群:90432500
点击加入