8

我们对字符串strlen进行mb_strlen计数,但它给出了字符串中的所有字符。我只想计算给定字符串中的字符 [az][AZ] 是否有任何每个定义的函数。或者我们需要开发自己的逻辑。

4

5 回答 5

9

经过测试

以下正则表达式替换所有数字、符号和空格。简短地说..它只允许字母A-Za-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" ;

产生3829

于 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 回答