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

 我来答
百度网友b882b9c
2014-07-17 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:240
采纳率:0%
帮助的人:95.2万
展开全部
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;

望采纳,打字不容易啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
myperbook
2014-07-17 · 超过49用户采纳过TA的回答
知道小有建树答主
回答量:106
采纳率:100%
帮助的人:82.1万
展开全部
使用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++;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式