如何计算字符串中的字母字符?

时间:2017-08-08 16:23:34

标签: php

我无法弄清楚如何做到这一点:

$string = "this is a test sentence";

我想要做的是在该刺中搜索字母字符,并显示每个字符中有多少是这样的:

'T'在句子中使用了3次。

'i'在句子中使用了2次。

我尝试了ctype_alpha()和其他一些事情,但我无法得到我正在寻找的答案。

4 个答案:

答案 0 :(得分:1)

请使用此代码。

  

array_count_values()是PHP函数,它返回每个的计数   数组中的字符。因此,我们需要使用str_split()将字符串拆分为数组,然后使用array_count_values()对其进行计数。

$string = "this is a test sentence";
$k = array_count_values(str_split($string));
print_r($k);

Demo

答案 1 :(得分:0)

以下代码将获取字符串的每个字母,将其设置为数组中的键并计算每个字母。如果您不想区分大小写,请先通过strtolower()或类似的字符串运行字符串。

<?php
$string = "this is a test sentence";

$counts = [];

for($i = 0; $i < sizeof($string);$i++){
    $char = $string[$i];
    if(!isset($counts[$char])){
        $counts[$char] = 0;
    }
    $counts[$char]++;
}

var_dump($counts);

要根据键进行排序,请执行以下操作:

ksort($counts);
var_dump($counts);

答案 2 :(得分:0)

如果您需要专门查看字母字符,最好使用正则表达式,而不仅仅是str_split,它会为您提供所有字符,不管是字母还是字母。

preg_match_all('/[A-Za-z]/', $string, $letters);

正则表达式匹配单个字符,因此$letters[0]中的每个完整模式匹配将是一个字母字符。

一旦你有一组字母,你可以使用array_count_values来计算它们。

$letter_counts = array_count_values($letters[0]);

如果您想按字母顺序对结果进行排序,ksort($letter_counts)会这样做。

如果您 使用str_split,则可以从结果中过滤掉非字母字符。

$letters = array_filter(str_split($string), 'ctype_alpha');

答案 3 :(得分:-1)

尝试使用以下代码,看看它是否适合您:

<?php
$data = "Two Ts and one F.";

foreach (count_chars($data, 1) as $i => $val) {
   echo "There were $val instance(s) of \"" , chr($i) , "\" in the string.\n";
}
?>