zoukankan      html  css  js  c++  java
  • php中strlen()和mb_strlen()函数

    php中strlen()和mb_strlen()函数

    一、总结

    一句话总结:

    mb_strlen()函数 的作用是 通过不同的编码计算字符串的长度: 比如 echo mb_strlen('中文a字1符','utf8').'<br>';//6

    1、mb_strlen()函数 使用注意?

    开启php_mbstring.dll扩展

    mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题

    2、解释下列代码的结果(strlen($str)和mb_strlen($str,'utf8'))?

    |||-begin

    <?php
        //测试时文件的编码方式要是UTF8
        $str='中文a字1符';
        echo strlen($str).'<br>';//14
        echo mb_strlen($str,'utf8').'<br>';//6
        echo mb_strlen($str,'gbk').'<br>';//8
        echo mb_strlen($str,'gb2312').'<br>';//10
    ?> 

    |||-end

    在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14,
    在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6 .

    二、php判断字符串长度 strlen()与mb_strlen()函数

    转自或参考:php判断字符串长度 strlen()与mb_strlen()函数
    https://www.cnblogs.com/ryanzheng/p/8285113.html

    PHP strlen() 函数

    定义和用法

    strlen() 函数返回字符串的长度。

    语法

    strlen(string)

    参数:string 

     1 <?php 
     2 
     3 $str=‘中文a字1符‘; 
     4 
     5 echo strlen($str); 
     6 
     7 echo ‘<br />‘; 
     8 
     9 echo mb_strlen($str,‘UTF8‘); 
    10 
    11 //输出结果 
    12 
    13 //14 
    14 
    15 //6 
    16 
    17 ?>

    结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14 
    在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6

    mb_strlen()函数

    需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保

    “extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。

    <?php
        //测试时文件的编码方式要是UTF8
        $str='中文a字1符';
        echo strlen($str).'<br>';//14
        echo mb_strlen($str,'utf8').'<br>';//6
        echo mb_strlen($str,'gbk').'<br>';//8
        echo mb_strlen($str,'gb2312').'<br>';//10
        ?> 

    结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14,在mb_strlen

    计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6 .


    虽然上面函数可以简单解决一些中英文混合问题,但是不能用于实实际中。

    PHP获取中英文混合字符串长度的实现代码如下,1中文=1位,2英文=1位,可自行修改

     
  • 相关阅读:
    C# winform 若要在加载设计器前避免可能发生的数据丢失,必须纠正以下错误
    C# 邮件发送系统
    IIS配置网站(WebServices),局域网都能访问
    C# 遍历窗体控件顺序问题
    zynqmp(zcu102rev1.0)系列---1---安装 xsdk
    linux 系统中将数据写入文档不能立即保存问题的解决方法
    virtualbox ubuntu16.04 自动挂载共享文件夹
    linux c 读写 ini 配置文件
    指针与 const --- 指针常量与常量指针
    Linux SD卡建立两个分区
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/11832587.html
Copyright © 2011-2022 走看看