66 votes

Comment puis-je vérifier si un mot est contenu dans une autre chaîne en utilisant PHP?

Pseudo Code

 text = "I go to school";
word = "to"
if ( word.exist(text) ) {
    return true ;
else {
    return false ;
}
 

Je cherche une fonction PHP qui retourne true si le mot existe dans le texte.

113voto

pix0r Points 17854

Vous avez un peu d'options en fonction de vos besoins. Pour cet exemple simple, strpos() est probablement la plus simple et la plus directe de la fonction à utiliser. Si vous avez besoin de faire quelque chose avec le résultat, vous pouvez préférer strstr() ou preg_match(). Si vous avez besoin d'utiliser un schéma complexe au lieu d'une chaîne de caractères comme l'aiguille, vous voudrez preg_match().

$needle = "to";
$haystack = "I go to school";

strpos() et stripos() , méthode (stripos() est sensible à la casse):

if (strpos($haystack, $needle) !== false) echo "Found!";

strstr() et stristr (), méthode (stristr est insensible à la casse):

if (strstr($haystack, $needle)) echo "Found!";

preg_match méthode (expressions régulières, beaucoup plus souple, mais plus lent):

if (preg_match("/to/", $haystack)) echo "Found!";

Parce que vous avez demandé pour une fonction complète, c'est comment vous pouvez mettre ensemble (avec les valeurs par défaut de l'aiguille et la botte de foin):

function match_my_string($needle = 'to', $haystack = 'I go to school') {
  if (strpos($haystack, $needle) !== false) return true;
  else return false;
}

18voto

Steve Clay Points 3697
 function hasWord($word, $txt) {
    $patt = "/(?:^|[^a-zA-Z])" . preg_quote($word, '/') . "(?:$|[^a-zA-Z])/i";
    return preg_match($patt, $txt);
}
 

Si $ word est "to", cela correspondra à:

  • "Écoute moi"
  • "Vers la Lune"
  • "à la minute près"

mais non:

  • "Ensemble"
  • "Dans l'espace"

14voto

Jonathan Fingland Points 26224

utilisation:

 return (strpos($text,$word) !== false); //case-sensitive
 

ou

 return (stripos($text,$word) !== false); //case-insensitive
 

5voto

jitter Points 35805

strpos

 <?php
$text = "I go to school";
$word = "to"
$pos = strpos($text, $word);

if ($pos === false) {
    return false;
} else {
    return true;
}
?>
 

3voto

Eineki Points 8632
 $text="I go to school";
return (strpos($text, 'to')!== false);
 

La page de manuel dont vous avez besoin pour trouver le bon usage des strpos

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X