Tenir compte du programme suivant:En PHP comment faire str_word_count() pour reconnaître tous les caractères spéciaux UTF-8 comme mots?
<?php
$str='You & I = We';
$arr=[];
$arr=str_word_count($str,2,"&=");
foreach($arr as $key=>$value){
echo $key.' ===> '.$value.'<br>';
}
?>
Sortie:
0 ===> You
4 ===> &
6 ===> I
8 ===> =
10 ===> We
Considérons maintenant le programme suivant:
<?php
$str='You & I = We';
$arr=[];
$arr=str_word_count($str,2);
foreach($arr as $key=>$value){
echo $key.' ===> '.$value.'<br>';
}
?>
Sortie:
0 ===> You
6 ===> I
10 ===> We
REMARQUE:
La différence entre le 1er et 2ème fonction est en 1ère fonction troisième argument
"&="
est présent mais en 2ème fonction est pas.
En tant que telle, la première fonction reconnaît les caractères spéciaux &
et =
comme des mots mais pas la 2ème fonction.
Considérons maintenant une situation où notre chaîne a beaucoup, beaucoup de caractères spéciaux. Il peut devenir impossible de tous les inclure dans le troisième argument.
Voici donc ma question:
Y at-il plus simple moyen de faire fonctionner str_word_count()
reconnaître tous UTF-8 caractères spéciaux comme des mots sans passer par la peine d'inclure un nombre gigantesque de caractères spéciaux dans les troisième argument?
Alors peut-être faire une strpos pour trouver l'emplacement du "mot" explosé? – Andreas
Comme l'a dit @Andreas. Exploser la chaîne par espace et vous aurez un joli tableau avec tous les mots, donc un mot serait en identifiant un espace entre les autres mots. Par exemple: 'Vous êtes le meilleur @ SO.', si vous faites' $ words = explode ('', $ that_string); 'et ensuite' echo count ($ words); 'vous obtiendriez' 6' des mots. Mais le dernier mot serait «SO», pas «SO». – matiaslauriti
@matiaslauriti vous avez tous les deux raison. Fist Je dois utiliser exploser pour séparer tous les éléments séparés par l'espace en éléments d'un tableau, puis une boucle et strpos pour trouver la position de chaque élément du tableau dans la chaîne d'origine. Corrigez-moi si je me trompe. –