simplest, shortest way to count capital letters in a string with php?

I am looking for the shortest, simplest and most elegant way to count the number of capital letters in a given string.


function count_capitals($s) {
return strlen(preg_replace('![^A-Z]+!', '', $s));

It's not the shortest, but it is arguably the simplest as a regex doesn't have to be executed. Normally I'd say this should be faster as the logic and checks are simple, but PHP always surprises me with how fast and slow some things are when compared to others.

function capital_letters($s) {
$u = 0;
$d = 0;
$n = strlen($s);

for ($x=0; $x<$n; $x++) {
$d = ord($s[$x]);
if ($d > 64 && $d < 91) {

return $u;

echo 'caps: ' . capital_letters('HelLo2') . "\n";

I'd give another solution, maybe not elegant, but helpful:

$mixed_case = "HelLo wOrlD";
$lower_case = strtolower($mixed_case);

$similar = similar_text($mixed_case, $lower_case);

echo strlen($mixed_case) - $similar; // 4

Category:php Time:2009-10-13 Views:0
Tags: php count letters

Related post

Copyright (C), All Rights Reserved.

processed in 0.527 (s). 13 q(s)