php题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。求解?

 我来答
我叫阪本先生
推荐于2016-07-18 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:74
采纳率:0%
帮助的人:59万
展开全部
用正则:
echo $str = " a b1c你 2好 34 ^&*5";
preg_match_all("/[0-9]{1}/",$str,$arrNum);
preg_match_all("/[a-zA-Z]{1}/",$str,$arrAl);
preg_match_all("/([/x{4e00}-/x{9fa5}]){1}/u",$str,$arrCh);
$length = strlen($str)-(count($arrNum[0])+count($arrAl[0])+count($arrCh[0]));
for ($i=0;$i<strlen($str);$i++){
if($str[$i] == " " ||$str[$i] == " "){
$num ++;
}

}
echo "字母个数:".count($arrAl[0])."<br/>";
echo "中文个数:".count($arrCh[0])."<br/>";
echo "空格个数".$num."<br/>";
echo "数字个数:".count($arrNum[0])."<br/>";
echo "其他字符个数:".$length;
追问
能用while函数吗?
追答
你要的while写法,效率没直接正则高,既然你要我就写,采纳吧:

echo $str = ' a b1c你 2好 ^&*34 5';
$spaceNums=0;
$arrNums=0;
$arrAlNums=0;
$i=0;
preg_match_all("/([\x{4e00}-\x{9fa5}]){1}/u",$str,$arrCh);
while ($i0){
$arrNums++;
}
preg_match_all("/[a-zA-Z]{1}/",$str[$i],$arrAl);
if(count($arrAl[0])>0){
$arrAlNums++;
}
$i++;
}
$length =strlen($str)-$arrAlNums-3*count($arrCh[0])-$spaceNums-$arrNums;
echo "字母个数:".$arrAlNums."";
echo "中文个数:".count($arrCh[0])."";
echo "空格个数".$spaceNums."";
echo "数字个数:".$arrNums."";
echo "其他字符个数:".$length."";
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式