三种PHP统计元音字母方法:一是str_split转数组后in_array逐个判断;二是preg_match_all正则匹配/aieou/i;三是str_replace替换元音后计算长度差。

直接用 str_split 拆成字符数组,再用 in_array 判断每个字符是否为元音(a、e、i、o、u,注意大小写),计数即可。核心是准确识别元音,别漏掉大写。
方法一:循环遍历 + in_array 判断
把字符串转为小写,逐个检查是否在元音数组中:
$vowels = ['a', 'e', 'i', 'o', 'u'];
$str = "Hello World";
$count = 0;
$lowerStr = strtolower($str);
$chars = str_split($lowerStr);
<p>foreach ($chars as $char) {
if (in_array($char, $vowels)) {
$count++;
}
}
echo $count; // 输出 3</p>方法二:正则匹配(简洁高效)
用 preg_match_all 一次性匹配所有元音字母:
$str = "Programming is fun!";
$count = preg_match_all('/[aeiou]/i', $str, $matches);
echo $count; // 输出 6
其中 /i 表示忽略大小写,[aeiou] 匹配任意一个元音字母。
立即学习“PHP免费学习笔记(深入)”;
方法三:str_replace 批量替换后计算长度差
先复制原字符串,把所有元音替换成空字符,长度差就是元音数量:
$str = "Beautiful Day"; $vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']; $noVowel = str_replace($vowels, '', $str); $count = strlen($str) - strlen($noVowel); echo $count; // 输出 7
注意事项
- 英文元音只有 a、e、i、o、u,不含 y(除非特定语境,PHP 默认不视为元音)
- 区分大小写时需显式列出大小写,或统一转小写/用正则 /i
- 空格、标点、数字、辅音都不影响统计,无需额外过滤
- 如果字符串含中文或 UTF-8 多字节字符,str_split 可能出错,此时建议用 mb_str_split(PHP 7.4+)或正则配合 u 修饰符



















