dogdogdogdogsdogdogdogs
savoir combien de fois un mot revient
comment pourrais-je compter combien de fois « chien » et « chiens » est apparu sans regex?
dogdogdogdogsdogdogdogs
savoir combien de fois un mot revient
comment pourrais-je compter combien de fois « chien » et « chiens » est apparu sans regex?
utilisation substr_count()
substr_count() renvoie le nombre de fois où la chaîne de l'aiguille se produit dans la chaîne de meule de foin. Veuillez noter que l'aiguille est sensible à la casse.
Cependant, vous dites que vous voulez compter les occurrences de dog
etdogs
. Si vous vérifiez dogs
d'abord, puis pour dog
, vous obtiendrez des résultats faussés (parce que dogs
est compté deux fois).
Si votre exemple est littéralement dog
et dogs
, vous devez soustraire le compte pour dogs
de celui pour dog
pour obtenir le nombre approprié.
Si vous travaillez sur une approche programmatique avec des mots variables, vous devrez vérifier au préalable si l'un des mots fait partie d'un autre mot.
Bravo à SilentGhost pour une approche plus simple.
ne pouvez-vous pas simplement soustraire le compte du mot long du compte du mot court? pourquoi toutes ces complications? – SilentGhost
@SilentGhost bien sûr. Merci, édité ma réponse. –
@SilentGhost: Il peut devenir plus difficile à comprendre si nous avons affaire à plusieurs chaînes qui se chevauchent. –
Utilisez substr_count()
.
substr_count('dogdogdogdog', 'dog');
substr_count('dogdogdogdogsdogdogdogs', 'dog');
// returns 7
La fonction substr_count
doit faire exactement ce que vous demandez:
$str = 'dogdogdogdogsdogdogdogs';
$a = substr_count($str, 'dog');
var_dump($a);
Est-ce que vous obtenez:
int 7
page en citant la documentation:
int substr_count (string $haystack , string $needle
[, int $offset = 0 [, int $length ]])
substr_count()
renvoie le nombre de fois la sous-chaîne aiguille se produit dans la chaîne de botte de foin. Veuillez noter que l'aiguille est sensible à la casse.
Eh bien, en plus substr_count()
vous pouvez également utiliser le bon vieux str_replace()
:
$string = 'dogdogdogdogsdogdogdogs';
$str = str_replace('dogs', '', $string, $count);
echo 'Found ' . $count . ' time(s) "dogs" in ' . $string;
$str = str_replace('dog', '', $str, $count);
echo 'Found ' . $count . ' time(s) "dog" in ' . $string;
Cette approche permet de résoudre the problem Pekka mentioned in his answer. Comme un avantage supplémentaire, vous pouvez également utiliser str_ireplace()
pour la recherche insensible à la casse, quelque chose que substr_count()
n'est pas capable de.
dans le manuel de PHP:
substr_count()
renvoie le nombre de fois la aiguille sous-chaîne se produit dans la botte de foin chaîne. Veuillez noter que aiguille est sensible à la casse.
vous souciez-vous des limites? par exemple "Ceci est une thèse", donc pour le mot "est", le résultat que vous voulez est 3 exact? – ghostdog74
En regardant sa chaîne, il ne le fait pas. Mais bon point @ghostdog, j'ai élargi ma réponse en prenant en compte ce que tu dis. –