PHP写个函数,返回某个字符串中 英文字母,数字,空格和其他字符 的个数

如题所述

第1个回答  2014-07-17
var $char_num=0;
var $kongge_num=0;
var $int_num=0;
var $other_num=0;
while((ch=getchar())!='\n')//回车键结束输入,并且回车符不计入
{
if(ch>='a'&&ch<='z'||ch<='z'&&ch>='a')
{
$char_num++;
}
else if(ch==' ')
{
$kongge_num++;
}
else if(ch>='0'&&ch<='9')
{
$int_num++;
}
else
{
$other_num++;
}
}

echo $char_num;
echo $kongge_num;
echo $int_num;
echo $other_num;

望采纳,打字不容易啊本回答被提问者采纳
第2个回答  2014-07-17
使用4个正则,分别提取英文字母,数字,空格和其他字符,然后计算每个字段的个数。
分数太少,大家都不远动手。追问

没办法,很少用百度知道,没财富值,最后只有五个了,加不上去了。。。我也想到大概是这个思路,谢谢你,但我是新手直接都不会。请问必须用正则吗,可以用函数或者循环做吗?谢谢了。

追答

用正则速度快,不过正则考验记忆力,大多数人记不住,每次都要查。

历遍字符串是个好方法:
<?php
$str='abcsdf33肯定撒范德萨发aa6677'; //要遍历的字符串
$len=strlen($temp); //总长度

//数字范围数组
$_num=array(1,2,3,4,5,6,7,8,9,0);
$num_i=0;
//字母范围数组
$_zimu=array('a','b'....'A','B'....'Z');
$zimu_i=0;

for($i=0;$i<$len;$i++){
$char=substr($str,$i,1); //当前字符

//开始判断是否是数字
if(in_array($char,$_num){
$num_i++;
}else if(in_array($char,$_num){//开始判断是否是字母
$zimu_i++;
}else if(preg_match('/^([\x81-\xfe][\x40-\xfe]){0,2}$/',$char)){ //判断中文GB2312

$chinese_i++;
}else if(preg_match("/[\x80-\xff]./", $char)){//判断中文uft8
$chinese_i++;
}else if(preg_match("/[\x80-\xff]./", $char)){//判断中文uft8
$chinese_i++;
}else if($char==' '){//判断空格
$null _i++;
}else if($char==' '){//其他
$other _i++;
}
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网