我们对字符串strlen
进行mb_strlen
计数,但它给出了字符串中的所有字符。我只想计算给定字符串中的字符 [az][AZ] 是否有任何每个定义的函数。或者我们需要开发自己的逻辑。
问问题
14206 次
5 回答
9
经过测试
以下正则表达式替换所有数字、符号和空格。简短地说..它只允许字母A-Z
和a-z
,其他的不会被考虑在内。
<?php
$str='Hello World345345 *90234 $$5assd54';
$str = preg_replace("/[^A-Za-z]/","",$str);
echo $str;//HelloWorldassd
echo strlen($str);//14
于 2013-10-26T08:27:41.553 回答
7
我认为您需要使用自己的逻辑。如果您只对计算 az 和 AZ 感兴趣,那么这应该可以:
<?php
$string= 'This is my sample string.';
echo "Everything: ".strlen($string);
echo '<br />';
echo "Only alphabetical: ".strlen(preg_replace('/[^a-zA-Z]/', '', $string));
?>
基本上这只是删除不在我们允许的字符列表中的所有内容,然后计算结果中的字符。
于 2013-10-26T08:21:29.533 回答
0
preg_match_all
我建议使用正则表达式,以及返回匹配数的事实。为什么选择 RE?因为您可能经常需要添加新字符进行翻译才能计算实际大小。
<?php
$str = ' this is my String with spécial chars';
echo strlen($str) . "\n";
echo preg_match_all ('/[A-Za-z]/', $str, $out) . "\n" ;
产生38
和29
。
于 2013-10-26T08:23:54.233 回答
0
$word = explode( ' ',$sentence );
$words = count( $word );
于 2014-03-28T18:51:19.567 回答
0
或者您可以像这样编写自定义代码
<?php
$x = "rahul";
$len = strlen($x);
$myLen = 0;
for($i =0; $i < $len ; $i++) {
if(!( $x[$i]==" " || $x[$i]=="/" || $x[$i]=="&" )) { // Add more conditions here
$myLen++;
}
}
于 2014-03-28T19:21:49.443 回答