首页 php教程 php手册 实用技巧:PHP截取中文字符串的问题

实用技巧:PHP截取中文字符串的问题

Jun 21, 2016 am 09:10 AM
start title unset

技巧|问题|中文|字符串

以下代码试用于GB2312编码,截取中文字符串是PHP中一个头疼的问题,解决方法是根据值是否大于等于128来判断是否是双字节字符,以避免出现乱码的情况。但中英文混合、特殊符号等问题总是存在,现在写一个比较全面的,仅供参考:

程序说明:

1. len 参数以中文字符为标准,1len等于2个英文字符,为了形式上好看些

2. 如果将magic参数设为false,则中文和英文同等看待,取绝对的字符数

3. 特别适用于用htmlspecialchars()进行过编码的字符串

4. 能正确处理GB2312中实体字符模式(𖰰)

程序代码:

<ccid_code>function FSubstr($title,$start,$len="",$magic=true) {/**  *  powered by Smartpig  *  mailto:d.einstein@263.net  */  $length = 0;if($len == "") $len = strlen($title);//判断起始为不正确位置if($start > 0){  $cnum = 0;  for($i=0;$i= 128) $cnum ++;  }  if($cnum%2 != 0) $start--;    unset($cnum);}if(strlen($title)?) if(substr($title,$i,4)="=" ?) ?&?) if($cur="=" $cur="substr($title,$i,1);">=128)   {    $cstep = 2;    $length += 2;    $i += 1;    $realnum ++;    if($magic)    {     $blen ++;     $ctype = 1;    }   }else{    $cstep = 1;    $length +=1;    $realnum ++;    if($magic)    {     $alen++;    }   }  }    if($magic)  {   if(($blen*2+$alen) == ($len*2)) break;   if(($blen*2+$alen) == ($len*2+1))   {    if($ctype == 1)    {     $length -= $cstep;     break;    }else{     break;    }   }  }else{   if($realnum == $len) break;  }}unset($cur);unset($alen);unset($blen);unset($realnum);unset($ctype);unset($cstep);return substr($title,$start,$length);}</ccid_code>
登录后复制



本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

docker start起不来怎么办 docker start起不来怎么办 Oct 21, 2022 pm 03:43 PM

docker start起不来的解决办法:1、检查运行状态,然后通过“echo 3 > /proc/sys/vm/drop_caches”命令释放被占用的内存;2、通过“$netstat -nltp|grep ...”命令检查端口是否已经被占用,如果上线后发现占有,则改为可用端口再重启即可。

title是什么意思 title是什么意思 Aug 04, 2023 am 11:18 AM

title是定义网页标题的意思,位于标签内,并且是在浏览器的标题栏中显示的文本,title对于网页的搜索引擎优化和用户体验都非常重要。在编写HTML网页时,应该注意使用相关的关键词和吸引人的描述来定义title元素,以便吸引更多的用户点击和浏览。

HTML中title的含义是什么 HTML中title的含义是什么 Mar 06, 2024 am 09:53 AM

HTML中的title显示的是网页标题标签,可以让浏览者知道当前页面的主要是讲什么的,所以每个网页都应该有一个单独的title。

node start 报错怎么办 node start 报错怎么办 Dec 29, 2022 pm 01:55 PM

node start报错的解决办法:1、直接在终端执行“node xx.js”;2、添加start启动项“ "scripts": {"test": "echo \"Error: no test specified\" && exit 1","start":"node service.js"}”;3、重新执行“npm start”即可。

Java线程中的start方法和run方法怎么使用 Java线程中的start方法和run方法怎么使用 Apr 20, 2023 am 08:58 AM

start方法和run方法$start()$方法用来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到$cpu$时间片,就开始执行$run()$方法。而直接调用$run()$方法,仅仅只是调用了一个类里的方法,其本质上还是在当前线程中执行的,因此只有使用$start()$方法来调用$run()$方法才能实现真正的多线程。示例代码@Slf4j(topic="c.Test4")publicclassTest4{publicstaticvoidmain(Strin

PHP中如何使用unset函数删除数组元素 PHP中如何使用unset函数删除数组元素 Jun 26, 2023 am 11:29 AM

PHP是一种流行的服务器端编程语言,它提供了许多有用的功能,其中之一就是操作数组。在使用PHP数组时,有时候需要删除元素,这时候就可以使用unset()函数。unset()函数是PHP中用于删除变量的函数,可以用来删除数组中的元素。它的语法如下:unset(array$array[,mixed$key1[,mixed$key2[,mixed

PHP关闭进程文件指针 PHP关闭进程文件指针 Mar 21, 2024 pm 07:40 PM

这篇文章将为大家详细讲解有关PHP关闭进程文件指针,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。关闭PHP进程文件指针简介关闭php进程文件指针对于释放系统资源和避免内存泄漏至关重要。本文将介绍在PHP中关闭文件指针的各种方法及其背后的原理。关闭文件指针的方法1.fclose()函数fclose()函数是最直接的方式来关闭文件指针。它接受一个文件指针作为参数,并释放与该指针关联的系统资源。$file=fopen("test.txt","r");fclose($

如何使用PHP中的session_start函数开启会话 如何使用PHP中的session_start函数开启会话 Jun 26, 2023 pm 01:33 PM

session_start()函数是PHP中开启会话的的函数之一。会话是Web开发中很常见的一种技术,而会话的基础就是在用户访问网站时给用户分配一个唯一的会话ID,并在后续的访问中使用这个会话ID来识别用户。会话可用于保存用户的登录状态、购物车内容和用户的其他信息,同时也可用于在网站中实现一些功能的权限控制。在PHP中开启会话的方式非常简单,只需使用sess

See all articles