资讯专栏INFORMATION COLUMN

php 截取中英文混合字符串

RdouTyping / 3479人阅读

摘要:截取中英文字符串截取中英文字符串,就不必再用或者截取想这样的字符串李三像不确定字符串是什么组成方式的时候,拿不准该用还是的时候,可以试试以下方法,是否能解决的你得烦恼利用中英混合的字符串截取字符串的字节数得到字符串中第位字符的码如果位高与,

php 截取中英文字符串

php 截取中英文字符串,就不必再用substr或者mb_substr

//截取想这样的字符串
a李三

像不确定字符串是什么组成方式的时候,拿不准该用substr还是mb_substr的时候 ,可以试试以下方法,是否能解决的你得烦恼

利用ASCII

/**
 * 
 * 中英混合的字符串截取
 * @param unknown_type $sourcestr
 * @param unknown_type $cutlength
 */
function assoc_substr($sourcestr, $cutlength) {
      $returnstr = "";
      $i = 0;
      $n = 0;
      $str_length = strlen ( $sourcestr ); //字符串的字节数 
      while ( ($n < $cutlength) and ($i <= $str_length) ) {
        $temp_str = substr ( $sourcestr, $i, 1 );
        $ascnum = Ord ( $temp_str ); //得到字符串中第$i位字符的ascii码 
        if ($ascnum >= 224) {//如果ASCII位高与224,
              $returnstr = $returnstr . substr ( $sourcestr, $i, 3 ); //根据UTF-8编码规范,将3个连续的字符计为单个字符   
              $i = $i + 3; //实际Byte计为3
              $n ++; //字串长度计1
        } elseif ($ascnum >= 192){ //如果ASCII位高与192,
              $returnstr = $returnstr . substr ( $sourcestr, $i, 2 ); //根据UTF-8编码规范,将2个连续的字符计为单个字符 
              $i = $i + 2; //实际Byte计为2
              $n ++; //字串长度计1
        } elseif ($ascnum >= 65 && $ascnum <= 90) {//如果是大写字母,
          $returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
          $i = $i + 1; //实际的Byte数仍计1个
          $n ++; //但考虑整体美观,大写字母计成一个高位字符
        }elseif ($ascnum >= 97 && $ascnum <= 122) {
            $returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
            $i = $i + 1; //实际的Byte数仍计1个
            $n ++; //但考虑整体美观,大写字母计成一个高位字符
        } else {//其他情况下,半角标点符号,
          $returnstr = $returnstr . substr ( $sourcestr, $i, 1 );
          $i = $i + 1; 
          $n = $n + 0.5; 
        }
      }
      return $returnstr;
}

通过这样就可以很方便的进行一些字符串的截取等,避免因为字节不同而截取乱码或者不对的情况。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28743.html

相关文章

  • PHP 符串截取符串函数

    摘要:应用场景从数据库读取产品标题过长时,会导致布局混乱,我们可以使用字符串截断函数进行截断,用代替截断部分。 应用场景 从数据库读取产品标题过长时,会导致布局混乱,我们可以使用字符串截断函数进行截断,用...代替截断部分。 函数代码 /** * 字符截取(对中文、英文都可以进行截取) * @param string $string 字符串 * @...

    godiscoder 评论0 收藏0
  • PHP经验总结 - 开发技巧分享

    摘要:这里简单介绍一下方法,中文解释就是将整个文件读入一个字符串,它有个参数这里他们分别表示要读取的文件的名称,另指路径,后面三个参数基本不会用到,甚至第二个参数都很少见,所以重点是确定你要读取文件的路径,是绝对路径。 简述 接触PHP差不多2年,从懵懂到入门,再到追求稳定高效的高阶级学习,我慢慢的积累一些PHP编程经验,我本人记性不好,所以把这些经验记下来,慢慢累积,乐自助人,何乐不为呢?...

    mikasa 评论0 收藏0
  • PHP符串操作

    摘要:字符串变量被解析。很显然,代表,代表获取字符串的长度对于英文数字字母。你好,截取字符串对于纯英文字符,可以使用对于中文字符,可以使用例如你好,世界查找字符串查找字符串,有内置函数代表,应该代表。当然也有函数用于处理其他编码的字符串。 1. 单引号和双引号 PHP可以在单引号或者双引号中包含字符串。但是单引号和双引号有所区别。 单引号包含的内容会被认为是普通字符串 双引号中允许包含字符...

    taoszu 评论0 收藏0
  • PHP 常用函数记录 一

    递归创建目录 /** * 递归创建目录 * @param [type] $dir [description] * @return [type] [description] */ function mkdirs($dir) { if(!is_dir($dir)){ if(!mkdirs(dirname($dir))){ return...

    snowell 评论0 收藏0
  • Smarty(变量修饰器)

    摘要:一概念变量修饰器调节器可用于变量,自定义函数和字符串。请使用符号和修饰器名称应用修饰器。变量修饰器由赋予的参数值决定其行为。与之相反将变量值转成大写字母所有字母,无参数。它与修饰器的效果刚好相反。它们会按复合的顺序来作用于变量,从左到右。 一、概念 变量修饰器(调节器)可用于变量,自定义函数和字符串。 请使用‘|’符号和修饰器名称应用修饰器。 变量修饰器由赋予的参数值决定其行为。 参数...

    linkin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<