2013-10-26 5 views
5

У нас есть strlen и mb_strlen счетчика строки, но которые дают все символы в строке. Я хочу считать только символ [a-z] [A-Z] в данной строке, есть ли какая-либо определенная функция. Или нам нужно разработать свою собственную логику.Подсчитать количество символов в строке без пробелов и специальных символов?

ответ

6

Испытано

Следующая регулярное выражение заменяет все цифры, символы & пространства. Вкратце говоря, он позволит использовать только алфавиты A-Z и a-z, другие не будут приняты во внимание.

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

Думаю, вам нужно будет использовать свою собственную логику. Если вы заинтересованы только в подсчете 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)); 
?> 

основном это просто удалить все, что не в нашем списке разрешенных символов затем подсчета символов в результате.

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.

0
$word = explode(' ',$sentence); 

$words = count($word); 
+1

Это хорошо для вынимая пространства, но и другие пробельные символы не будут вывезены. – BOMEz

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++; 
    } 
} 
Смежные вопросы