Jaki jest najskuteczniejszy sposób zliczania wszystkich wystąpień określonego znaku w ciągu PHP?


Jaki jest najskuteczniejszy sposób zliczania wszystkich wystąpień określonego znaku w ciągu PHP?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Użyj tego:
echo substr_count("abca", "a");// will echo 2
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nie możesz nakarmić postaci

preg_match_all
http://us2.php.net/preg_match_all
?
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nie wiem, jakiej odpowiedzi szukasz, ale oto funkcja, która to potrafi:
function findChar($c, $str) {
indexes = array();
for($i=0; $i<strlen($str); $i++) {
if ($str{$i}==$c) $indexes[] = $i;
}
return $indexes;
}

Podaj znak, którego szukasz i ciąg, na który chcesz spojrzeć:
$mystring = "She shells out C# code on the sea shore";
$mychar = "s";
$myindexes = $findChar($mychar, $mystring);
print_r($myindexes);

To powinno dać ci coś podobnego
Array ( [0] => 0
[1] => 4
[2] => 9
[3] => 31
[4] => 35)

czy jakoś tak...
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli zamierzasz wielokrotnie sprawdzać ten sam ciąg, rozsądnie byłoby mieć jakąś tablicę trie lub nawet asoc dla niej, w przeciwnym razie najłatwiej będzie to zrobić ...
for($i = 0; $i < strlen($s); $i++)
if($s[i] == $c)
echo "{$s[i]} at position $i";

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się