Php 是否计算字符串中不带空格和特殊字符的字符数?

Php 是否计算字符串中不带空格和特殊字符的字符数?,php,string,Php,String,我们有strlen和mb_strlen对字符串进行计数,但这会给出字符串中的所有字符。我只想计算给定字符串中的字符[a-z][a-z],每个定义的函数都有。或者我们需要开发自己的逻辑。我认为您需要使用自己的逻辑。如果您只对计算a-z和a-z感兴趣,那么这应该是可行的: <?php $string= 'This is my sample string.'; echo "Everything: ".strlen($string); echo '<br />'; echo "Onl

我们有
strlen
mb_strlen
对字符串进行计数,但这会给出字符串中的所有字符。我只想计算给定字符串中的字符[a-z][a-z],每个定义的函数都有。或者我们需要开发自己的逻辑。

我认为您需要使用自己的逻辑。如果您只对计算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\u match\u all
返回匹配数。为什么是你?因为为了计算实际大小,您可能经常需要添加新字符进行转换

<?php

$str = ' this is my String with spécial chars';
echo strlen($str) . "\n";

echo preg_match_all ('/[A-Za-z]/', $str, $out) . "\n" ;

已测试

以下正则表达式替换所有数字、符号和空格。简短地说。。它只允许字母
A-Z
A-Z
,其他字母将不被考虑

<?php
$str='Hello World345345 *90234 $$5assd54';
$str = preg_replace("/[^A-Za-z]/","",$str);
echo $str;//HelloWorldassd
echo strlen($str);//14

或者您可以这样编写自定义代码

<?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++;
  }
}

这有助于去掉空格,但不会去掉其他空白字符。
<?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++;
  }
}