刚才在网上下了一段统计中文字符个数的代码如下:
function length($str){//可以统计中文字符
$len=strlen($str);
$i=0;
while($i<$len){
if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",$str[$i])){
$i+=2;
}else{
$i+=1;
}
$n+=1;
}
请问其中的chr(0xa1),chr(0xff)代表什么意思啊/
我用echo chr(0xa1)和echo chr(0xff)输出都是空啊?请指教:
function length($str){//可以统计中文字符
$len=strlen($str);
$i=0;
while($i<$len){
if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",$str[$i])){
$i+=2;
}else{
$i+=1;
}
$n+=1;
}
请问其中的chr(0xa1),chr(0xff)代表什么意思啊/
我用echo chr(0xa1)和echo chr(0xff)输出都是空啊?请指教:
0xa1 ==> 161
0xff= ==> 255
chr()函数返回相对应于 ascii 所指定的单个字符chr(0xa1)."-".chr(0xff) 表示全部gb2312字符
注意:这可不是全部汉字
又因为0x76的ascii码是118所以可不可以把chr(0xa1)."-".chr(0xff) 表示全部gb2312字符
改成chr(0x76)."-".chr(0xff) 表示全部gb2312字符
echo ord("是");
echo "<br>";
echo chr(202);
其中chr(202)什么也输不出来
gb2312的汉字是从8140-fea0
所以从a1开始检测只能检测常用汉字既然用到正则,为何不用unicode检查呢?