Here are some more experiments on this relatively new and extremely handy function.
$string = 'I have never seen ANYTHING like that before! My number is "4670-9394".';
foreach(count_chars($string, 1) as $chr => $hit)
echo 'The character '.chr(34).chr($chr).chr(34).' has appeared in this string '.$hit.' times.<BR>';
echo strlen($string).' is not the same as '.strlen(count_chars($string, 3));
As we can see above:
1)If you cares only about what is in the string, use count_chars($string, 1) and it will return an (associative?) array of what shows up only.
2) Either I misunderstood what the manul actually said, or it does not work the way it described: count_chars($strting, 3) actually returned a string of what characters are in the string, not a string of their byte-values (which is great because a string of numbers would be much harder to handle);
3)This is a short version of password checking: get the original string's length, then compare with the length of the string returned by count_chars($string,3).
$length_of_string = strlen($string);
$num_of_chars = strlen(count_chars($string, 3));
$diff = ($length_of_string - $num_of_chars);
echo 'At least one character has been used more than once.';
echo 'All character have been used only once.';
Note that since $num_of_chars gives no information about the actual number of occurance, we cannot go any further by the same rationale and say when $diff =2 then 2 characters showed up twice; it might be 1 character showd up 3 times, we have no way to tell (a good tolerance level setter, though). You have to get the array and check the values if you want to have more control.
4) Final trick: now we have a primitive way to count the number of words in a string! (or do we have a fuction for that already?)