2013-07-22 3 views
3

Je dois vérifier les mots dans la variable de tableau, je besoin de quelque chose comme ceci:Comment utiliser stristr dans le tableau variable

$banned = array('word1','word2','word3','word4'); 


if (stristr($title, $banned) !== false) { 

    //$title contains a banned word 

}else{ 

    //$title not contains any word of $banned variable array 

} 
+0

Avez-vous regarde ça? http://php.net/manual/en/function.stristr.php –

Répondre

2
<?php 
$banned = array('word1','word2','word3','word4'); 

$hit = false; 
foreach ($banned as $banned_item) 
{ 
    if (strpos($title, $banned_item) !== false) 
    { 
     $hit = true; 
     break; 
    } 
} 

if ($hit) 
{ 
    // $title contains a banned word 
} 
else 
{ 
    //$title not contains any word of $banned variable array 
} 

_

   ************** update1 ************** 

Le code ci-dessus est sensible à la casse, si vous voulez que votre code soit insensible à la casse, il suffit de changer:

if (strpos($title, $banned_item) !== false) 

à:

if (stristr($title, $banned_item) !== false) 
+0

Excelent, ce code fonctionne comme un charme! –

+0

@josesanchez Sachez que ce code est sensible à la casse, contrairement à la fonction de votre question. Si vous ne le souhaitez pas, vous devriez utiliser 'stripos' au lieu de' strpos'. –

+0

oui, j'avais déjà fait le changement pour être insensible, merci encore :) –

-1

Utilisez in_array fonction de PHP

in_array($title, $banned) 
-1

Puisque vous ne vous inquiétez pas à propos de la valeur de retour, vous voulez probablement utiliser stripos. stripos est fondamentalement comme stristr, mais il retourne juste vrai ou faux si votre chaîne est contenue dans $title. stristr correspondrait, puis revenir

Je voudrais mettre en garde contre l'utilisation in_array, comme certains des autres réponses ici suggèrent, car il ne reviendrait vrai si $title correspond exactement à l'un de vos mots interdits, plutôt que ce soit une longue chaîne que contient l'un des mots interdits.

$banned = array('word1','word2','word3','word4'); 

$found = false; 

foreach($banned as $ban) { 
    if(stripos($title, $ban) !== false) { 
     $found = true; 
     break; 
    } 
} 

if($found) { 

    //$title contains a banned word 

}else{ 

    //$title not contains any word of $banned variable array 

} 
+0

Ceci est un commentaire, pas une réponse –

+0

@MikeW Je ne suis pas d'accord. Plutôt que de répondre de manière rigide à la question exacte posée, je prends l'exemple en considération, et je guide l'affiche vers une solution plus appropriée. –

+0

Il est étrange combien de texte est apparu depuis que j'ai laissé mon commentaire. –

1

Vous voulez cas la recherche insensible, vous devez donc faire une boucle par tableau et appliquer la fonction à chaque élément:

<?php 

$title = "text WORD3 text"; 
$banned = array('word1','word2','word3','word4'); 

$flag = 0; 
foreach($banned as $word) 
{ 
    if (stristr($title, $word) !== false) { 
     $flag = 1; 
     break;//no need to loop further 
    } 
} 

if ($flag == 1) 
{ 
    print "title contains a banned word"; 
} 

impressions:

titre contient un mot interdit

Questions connexes