- mb_strlen: documentation ( source)
- preg_match_all: documentation ( source)
<?php
$p =<<<EOT
That interviews should involve simple code is now common wisdom in programming circles. The story is that a high percentage of programmers, even people with impressive resumes, “just can’t code.” Asked to do the simplest things—problems a good coders could solve as fast they could write—some spend ten or twenty minutes before they get an answer, or fail entirely. (See discussion by Jeff Attwood and Joel Spolsky.) I don’t go as far as others here. I think a lot of “slow coders” are probably excellent employees, making up for it in other areas. Some projects don’t need speed. Some people just need to spend more time programming; everyone was a slow programmer some time. But I know from experience that slow coders don’t work at LibraryThing. They don’t fit the LibraryThing development culture.
EOT;
$pattern = '[\w\d]+';
$words = array();
preg_match_all('/'.$pattern.'/', $p, $words);
$words = $words[0];
$result = array();
foreach ($words as $word) {
$len = mb_strlen($word);
if (isset($result[$len])) {
$result[$len]++;
} else {
$result[$len] = 1;
}
}
foreach ($result as $length => $count) {
echo $count.' words with '.$length.' letter.'.PHP_EOL;
}