我无法弄清楚如何做到这一点:
$string = "this is a test sentence";
我想要做的是在该刺中搜索字母字符,并显示每个字符中有多少是这样的:
'T'在句子中使用了3次。
'i'在句子中使用了2次。
我尝试了ctype_alpha()
和其他一些事情,但我无法得到我正在寻找的答案。
答案 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);
答案 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";
}
?>