php按字符无乱码截取中文的方法_php技巧

本文实例讲述了php按字符无乱码截取中文的方法。分享给大家供大家参考。具体实现方法如下:

<?php
//$str 待截取的字符串
//$len 截取的字符个数
//$chars 已经截取的字符数
//$res  保存的字符串
//$chars 保存已经截取的字符串个数
//$offset 截取的偏移量
//$length 字符串的字节数
//若$len>$str的字符个数,造成无谓的while循环,($offset<$length限定)
function utf8sub($str,$len){
  if($len<=0){
    return ;
  }
  $res="";
  $offset=0;
  $chars=0;
  $length=strlen($str);
  while($chars<$len && $offset<$length){
    $hign=decbin(ord(substr($str,$offset,1)));
      if(strlen($hign)<8){
        $count=1;
      }elseif(substr($hign,0,3)=="110"){
        $count=2;
      }elseif(substr($hign,0,4)=="1110"){
        $count=3;
      }elseif(substr($hign,0,5)=="11110"){
        $count=4;
      }elseif(substr($hign,0,6)=="111110"){
        $count=5;
      }elseif(substr($hign,0,7)=="1111110"){
        $count=6;
      }
    $res.=substr($str,$offset,$count);
    $offset+=$count;
    $chars+=1;
  }
  return $res;
}
function utf8sub1($str,$len){
  $chars=0;
  $res="";
  $offset=0;
  $length=strlen($str);
  while($chars<$len && $offset<$length){
    $hign=decbin(ord(substr($str,$offset,1)));
    if(strlen($hign)<8){
      $count=1;
    }elseif($hign & "11100000"=="11000000"){
      $count=2;
    }elseif($hign & "11110000"=="11100000"){
      $count=3;
    }elseif($hign & "11111000"=="11110000"){
      $count=4;
    }elseif($hign & "11111100"=="11111000"){
      $count=5;
    }elseif($hign & "11111110"=="11111100"){
      $count=6;
    }
    $res.=substr($str,$offset,$count);
    $chars++;
    $offset+=$count;
  }
  return $res;
}
$a="中华ah人民hdj";
echo utf8sub($a,5);
?>

希望本文所述对大家的php程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
, 方法
, 中文
, 字符
, 截取
无乱码
中文字符串截取无乱码、php截取字符串乱码、substr截取中文乱码、php中文截取无乱码、中文截取无乱码,以便于您获取更多的相关知识。

时间: 2024-10-31 11:59:41

php按字符无乱码截取中文的方法_php技巧的相关文章

php按字符无乱码截取中文的方法

 这篇文章主要介绍了php按字符无乱码截取中文的方法,涉及php操作中英文字符串的技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了php按字符无乱码截取中文的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

php中json_encode处理gbk与gb2312中文乱码问题的解决方法_php技巧

本文讲述了php中json_encode处理gbk与gb2312中文乱码问题的解决方法,具体方法如下: 1.json_encode()中文在gbk/gb2312中对中文返回为null $arr = array ( array ( 'catid' => '4', 'catname' => 'www.jb51.net', 'meta_title' => '' ) ); echo json_encode($arr); 运行结果: [{"catid":"4"

php版微信公众平台回复中文出现乱码问题的解决方法_php技巧

本文实例分析了php版微信公众平台回复中文出现乱码问题的解决方法.分享给大家供大家参考,具体如下: 微信公众平开发时碰到回复中文乱码了,这个问题小编发现是编码问题,其实只要把编码转成utf8就可以解决了,具体来看看. 很多微信公众平台的自动回复程序都是 ThinkWechat.class.php 这个类开发的,今天碰到一个莫名其妙的乱码问题,查问题发现是GB2312编码导致,所以要修改源码. 先增加一个方法: /** * 检测是否UTF-8 * @param $str * @return boo

PHP读MYSQL中文乱码的快速解决方法_php技巧

打算切换某个网站的主机,没想到遇到Php和Mysql中文乱码的问题. 以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是问号,乱码一片,记得我以前也曾经有过一次切换出现乱码的经验,原因肯定是Mysql版本之间的差异问题. 只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用

PHP实现通过中文字符比率来判断垃圾评论的方法_php技巧

本文实例讲述了PHP实现通过中文字符比率来判断垃圾评论的方法.分享给大家供大家参考.具体实现方法如下: 一.需求: 最近一段时间常常出现这类垃圾评论:一大段英文字符里夹杂一两个生僻汉字,包含了中文字符,而且又没包含啥中文的敏感词,所以就堂而皇之的通过了评论过滤.对这类评论的处理可以采取判断中文字符的比率来确认,但是也会存在一定的误判. 二.解决方案: 要用到php的两个函数strlen和mb_strlen,strlen会把单个汉字长度认定为3,mb_strlen单个汉字长度为1.同一段字符通过两

php+ajax无刷新上传图片的实现方法_php技巧

本文实例讲述了php+ajax无刷新上传图片的实现方法.分享给大家供大家参考,具体如下: 1.引入文件 <!--图片上传begin--> <script type="text/javascript" src="/js/jquery.form.js"></script> <script type="text/javascript" src="/js/uploadImg.js">&l

php按单词截取字符串的方法_php技巧

本文实例讲述了php按单词截取字符串的方法.分享给大家供大家参考.具体分析如下: 这里指定字符串和单词数量进行截取 复制代码 代码如下: <?php function limit_words($string, $word_limit) {     $words = explode(" ",$string);     return implode(" ",array_splice($words,0,$word_limit)); } //Example Usage

php 中文字符入库或显示乱码问题的解决方法_php技巧

大家以后在编写过程中, 一定要记得定义字符类型.mysql_query("set names 'gbk'") 解决的方法就这么简单. 今天做了一个数据库查询,放出代码. 复制代码 代码如下: <?php /* filename:query.php do:get and show the data author:www.5dkx.com */ include_once("conn.php"); include_once("include.php&quo

php网页标题中文乱码的有效解决方法_php技巧

刚刚测试了一个php的网页,结果发现标题中文乱码,于是乎,搜搜得到了一个比较不错的答案 在<title>标签前面添加以下一句话就解决了 复制代码 代码如下: <meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>