好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php截取汉子 php 截断

很多站长朋友们都不太清楚php截取汉子,今天小编就来给大家整理php截取汉子,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php如何截取汉字长度啊? 2、 php要截取一段汉语文字,怎样才能保证不把汉字拆开? 3、 如何利用PHP来截取一段中文字符串而不出现乱码 php如何截取汉字长度啊?

function cutstr($string, $length, $dot = '') {

global $dbcharset;

$length*=2;

if(strlen($string) <= $length) {

return $string;

}

$string = str_replace(array('', '"', '<', '>'), array('', '"', '<', '>'), $string);

$strcut = '';

if(strtolower($dbcharset) == 'utf8') {

$n = $tn = $noc = 0;

while($n < strlen($string)) {

$t = ord($string[$n]);

if($t == 9 || $t == 10 || (32 <= $t $t <= 126)) {

$tn = 1; $n++; $noc++;

} elseif(194 <= $t $t <= 223) {

$tn = 2; $n += 2; $noc += 2;

} elseif(224 <= $t $t < 239) {

$tn = 3; $n += 3; $noc += 2;

} elseif(240 <= $t $t <= 247) {

$tn = 4; $n += 4; $noc += 2;

} elseif(248 <= $t $t <= 251) {

$tn = 5; $n += 5; $noc += 2;

} elseif($t == 252 || $t == 253) {

$tn = 6; $n += 6; $noc += 2;

} else {

$n++;

}

if($noc >= $length) {

break;

}

}

if($noc > $length) {

$n -= $tn;

}

$strcut = substr($string, 0, $n);

} else {

for($i = 0; $i < $length; $i++) {

$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];

}

}

$strcut = str_replace(array('', '"', '<', '>'), array('', '"', '<', '>'), $strcut);

return $strcut.$dot;

}

php要截取一段汉语文字,怎样才能保证不把汉字拆开?

还得看你的编码是gbk的还是UTF8的。

以下是UTF-8的编码下的截取

function smarty_modifier_truncate_utf8($string, $length, $etc = '...')

{

$result = '';

$string = html_entity_decode(trim(strip_tags($string)), ENT_QUOTES, 'UTF-8');

$strlen = strlen($string);

for($i = 0; (($i < $strlen) ($length > 0)); $i++)

{

if($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0'))

{

if($length < 1.0)

{

break;

}

$result .= substr($string, $i, $number);

$length -= 1.0;

$i += $number - 1;

}

else

{

$result .= substr($string, $i, 1);

$length -= 0.5;

}

}

$result = htmlspecialchars($result, ENT_QUOTES, 'UTF-8');

if($i < $strlen)

{

$result .= $etc;

}

return $result;

}

以下是GBK编码下的截取(常用)

function gbk_strlen($string)

{

if(extension_loaded('mbstring'))

{

mb_internal_encoding('GBK');

return mb_strlen($string);

}

else

{

preg_match_all('/[\x81-\xfe]?./', $string, $match);

return count($match[0]);

}

}

function gbk_substr($string, $start, $length = null)

{

if(extension_loaded('mbstring'))

{

mb_internal_encoding('GBK');

if(is_null($length))

{

return mb_substr($string, $start);

}

else

{

return mb_substr($string, $start, $length);

}

}

else

{

preg_match_all('/[\x81-\xfe]?./', $string, $match);

if(is_null($length))

{

return implode('', array_slice($match[0], $start));

}

else

{

return implode('', array_slice($match[0], $start, $length));

}

}

}

function smarty_modifier_truncate_gbk($string, $length = 80, $etc = '...',

$break_words = false, $middle = false)

{

if ($length == 0)

return '';

if (gbk_strlen($string) > $length) {

$length -= gbk_strlen($etc);

if (!$break_words !$middle) {

$string = preg_replace('/\s+?(\S+)?$/', '', gbk_substr($string, 0, $length+1));

}

if(!$middle) {

return gbk_substr($string, 0, $length).$etc;

} else {

return gbk_substr($string, 0, $length/2) . $etc . gbk_substr($string, -$length/2);

}

} else {

return $string;

}

}

如何利用PHP来截取一段中文字符串而不出现乱码

/*

功能:截取全角和半角混合的字符串以避免乱码

参数:

$str_cut 需要截断的字符串

$length  允许字符串显示的最大长度

*/

function substr_cut($str_cut,$length = 30){ 

if (strlen($str_cut) >; $length){

  for($i=0; $i < $length; $i++)

   if (ord($str_cut[$i]) >; 128) $i++;

  $str_cut = substr($str_cut,0,$i) . "...";

}

return $str_cut;

}

说明: 

程序的关键语句是: 

for($i=0; $i < $length; $i++)

if (ord($str_cut[$i]) >; 128) $i++;

$str_cut = substr($str_cut,0,$i) . "...";

如果字符的ASCII码大于128,说明当前字符和下一个字符是属于一个汉字的。 

则,$i++ 跳过对下一个字符的判断。 

再结合循环中的 $i++ ,实际上,当遇到一个汉字时,$i 就会加 2 ,从而正确的跳过汉字。 

最终实现的效果是,$i 变量指向的要么是半角的字符,要么是全角汉字的首字符,不会指向 

全角汉字的第二个字符,所以,当$i >;= $length 时,循环结束,使用 

$str_cut = substr($str_cut,0,$i) . "..."; 截取字符时自然也就不会出现乱码了。 

本人在写一个程序时需要利用PHP从一段字符串中截取指定长度的一段字符下来。以前在写ASP的时候,参考动网的程序写过类似的程序,不过,还没用PHP写过。 

想偷懒,看有不有现成的代码可以用。于是,在GOOGLE中输入:PHP 截断字符 后查找到一段代码。

关于php截取汉子的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php截取汉子 php 截断的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did254899
更新时间:2023-09-26   阅读:45次

上一篇: php判断多个字符串 php判断字符串包含字符

下一篇:订餐系统php 订餐系统升级维护,请前往

相关资讯

最新资料更新

  • 1.phpml源码安装 下载了个php源码包,怎么使用
  • 2.如何阅读php源码 php在线源码获取
  • 3.关于php2esgbi的信息
  • 4.php+rpush的简单介绍
  • 5.php圆形头像代码 php生成圆形图
  • 6.php从事哪个方面 php干啥的
  • 7.php与java同步接口 php和java做服务端对比
  • 8.php显示json php显示客户端ip和服务器ip
  • 9.php图片上传及显示 php 图片上传
  • 10.php项目任务分配 php任务调度框架
  • 11.php有关线程问题 php多线程
  • 12.郑州php业余培训 郑州php业余培训机构
  • 13.php接口和抽象类的区别 php抽象函数
  • 14.php有类似cmap 与php类似的语言
  • 15.包含php7.0.10的词条
  • 16.php编程圆面积 编程实现圆的面积
  • 17.仿win桌面php源码 仿windows桌面
  • 18.php变量获取图片 php调用图片
  • 19.修改文件限制php php修改上传文件大小
  • 20.php上传图片木马 php图片上传代码

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]