A. php strlen utf8一个中文算3个字节吗
utf8是变长编码, 不一定是3字节, 可能是2~3, 当然ASCII字符还是1字节.gbk也是变长编码, 非ASCII的2字节, ASCII还是1字节.这两个编码对于非ASCII字符, 都是多字节的, 并且多字节字符每个字节都是>127的, 也就是负数(最高位是1).另外, PHP里的strlen不是依靠判断字符串结尾的, 因为PHP是脚本语言, 它的字符串和C++的string是一样的, 将存储的字节个数当作字符串长度.另外, PHP里想数数有多少个字节用strlen, 想数数有多少个字符, 用mb系列函数, 自己去了解一下.还有些需求, 比如字符串匹配查找之类的, gbk是存在双字节匹配问题的, 两个连续汉字的中间2个字节可能被误认为其他字符, 所以不能用strstr之类的字节匹配函数(PHP里是纯字节匹配的, 不关心), 但utf-8是可以的, 它不会有类似的冲突, 另外最好的做法当然还是用mb系列, 安全可靠, 而且还支持猜编码功能.
B. php strlen的问题
php strlen() 函数返回字符串的长度。
<?php
$str = 'abcdef';
echo strlen($str); // 6
$str = ' ab cd ';
echo strlen($str); // 7
?>
strlen(string)
参数 描述
string 必需。规定要检查的字符串。
//测试时文件的编码方式[1]
<?php
$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
?>
C. PHP判断是中文还是英文
/*
判断输入是否是纯数字,英文,汉字等
利用php的mb_strlen和strlen函数就可以轻松得知字符串的构成是全英文、中英混合、全中文。
1: 如果strlen返回的字符长度和mb_strlen以当前编码计算的长度一致,则为纯英文字符串
2: 如果strlen返回的字符长度和mb_strlen以当前编码计算的长度不一致,并且strlen返回值和mb_strlen返回值求余后得0 则为全汉字
3: 如果strlen返回的字符长度和mb_strlen以当前编码计算的长度不一致,并且strlen返回值和mb_strlen返回值求余后不为0 则为中英混合
*/
<?php
$str = "123456abc汉字";
$x = mb_strlen($str, 'gb2312');
$y = strlen($str);
echo "-----------$str----------<br>";
echo "x: ".$x."<br>";
echo "y: ".$y."<br>";
?>
D. php中strlen什么意思
strlen获取变量的长度,判断是否等于2,这里有几个问题,比如如果$i是中文的话结果可能有问题,使用mb_strlen避免错误。
E. php的strlen问题,为什么相同的一句话,输出结果不同呢
编码问题。
UTF8编码中,中文为3字节,也就是一个中文字占用3个字节。
GB编码中,中文为2字节。
你可以数一下(那个冒号应该是英文字符,占1字节),31的那个是UTF8编码,26的是GB编码
并且中文有5个字,两个差距正好差了5个字节。
F. php如何获取字符串长度,中文、符号、英文字母都算作一个
一般情况下 有汉字的时候 是使用 mb_strlen 这个函数来计算字符长度
这个函数需要开启 mb_string扩展 默认都是不开启的
G. php 中的mb_strlen 与 strlen 哪个跟javascript 中的length 相同,如果不同应该怎么改的相同
额~ 如果是字符串长度的话 mb_strlen 和 Js 的 length 相同。
strlen是字符串长度,但是其实可以说是字节长度,因为PHP还不支持unicode,所以对于多字节字符没法通过strlen正确的取得长度。如果编码是gbk的话,一个汉字的长度是2, 如果是utf-8的话,一个汉字的长度一般是3,也可能不是,这个按照编码区间来区分。
如果要出里多字节字符字符串的话,就要用PHP 的一个 mb 扩展,mb族包含了一系列函数,可以去PHP 手册看http://www.php.net/manual-lookup.php?pattern=mb&lang=en&scope=quickref
我也表达不是很明白。建议你网络或者google 一下 Unicode、ASCII、UTF-8、GBK~ 都看一下,就很明白了。PHP和JS支持的编码不一样,所以很多不一样。
有问题可以Hi我。