我们有strlen
和mb_strlen
的字符串计数,但给出了字符串中的所有字符。我只想计算给定字符串中的字符 [a-z][A-Z] 是否有每个定义的函数.或者我们需要发展自己的逻辑。
已测试
以下正则表达式替换所有数字、符号和空格。简短地说..它只允许字母A-Z
和a-z
,其他的不会被考虑在内。
<?php
$str='Hello World345345 *90234 $$5assd54';
$str = preg_replace("/[^A-Za-z]/","",$str);
echo $str;//HelloWorldassd
echo strlen($str);//14
我认为你需要使用自己的逻辑。如果您只对计算 a-z 和 A-Z 感兴趣,那么这应该可以工作:
<?php
$string= 'This is my sample string.';
echo "Everything: ".strlen($string);
echo '<br />';
echo "Only alphabetical: ".strlen(preg_replace('/[^a-zA-Z]/', '', $string));
?>
基本上,这只是删除我们不在我们允许的字符列表中的所有内容,然后计算结果中的字符。
我建议使用正则表达式,以及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
。
$word = explode( ' ',$sentence );
$words = count( $word );
或者你可以像这样编写自定义代码
<?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++;
}
}