2010-08-18 4 views
0

Veuillez excuser ma noob-iness!stristr Recherche sensible à la casse PHP

J'ai une chaîne $, et je voudrais voir si elle contient un ou plusieurs groupes de mots, mots link c t, fu, sl ** ETC. Donc je pensais que je pouvais faire:

if(stristr("$input", "dirtyword1")) 
{ 
    $input = str_ireplace("$input", "thisWillReplaceDirtyWord"); 
} 
elseif(stristr("$input", "dirtyWord1")) 
{ 
    $input = str_ireplace("$input", "thisWillReplaceDirtyWord2"); 
} 

... ETC. MAIS, je ne veux pas avoir à continuer si/elseif/elseif/elseif/elseif ...

Je ne peux pas simplement faire une instruction switch OU avoir un tableau, puis simplement dire quelque chose comme ?:

$dirtywords = { "f***", "c***", w****", "bit**" }; 

if(stristr("$input", "$dirtywords")) 
{ 
    $input = str_ireplace("$input", "thisWillReplaceDirtyWord"); 
} 

Je vous remercie de toute aide à tous

Merci

+0

variables pourquoi vous citez? –

+0

Parce que c'est ainsi que j'ai appris à faire stristr sur le site manuel de php: http://www.php.net/manual/en/function.stristr.php :) –

+0

* (apparenté) * http://stackoverflow.com/ questions/24515/bad-words-filter – Gordon

Répondre

3
$dirty = array("fuc...", "pis..", "suc.."); 
$censored = array("f***", "p***", "s***"); 

$input= str_ireplace($dirty, $censored , $input); 

Notez que vous ne disposez pas de vérifier stristr() pour faire un str_ireplace()

+0

J'aime votre choix de mots lol. Merci! : D J'accepterai en 10 minutes quand ça me le permettra :) –

0

http://php.net/manual/en/function.str-ireplace.php

Si la recherche et remplacer sont des tableaux, puis str_ireplace() prend une valeur de chaque tableau et les utilise pour faire le remplacement sur le sujet. Si replace a moins de valeurs que search, une chaîne vide est utilisée pour le reste des valeurs de remplacement. Si search est un tableau et replace est une chaîne, alors cette chaîne de remplacement est utilisée pour chaque valeur de recherche.

0

Sûrement pas la meilleure solution puisque je ne connais pas trop PHP, mais qu'en est-il d'une boucle?

foreach (array("word1", "word2") as $word) 
{ 
    if(stristr("$input", $word)) 
    { 
    $input = str_ireplace("$input", $word" "thisWillReplaceDirtyWord"); 
    } 
} 

Lorsque vous avez plusieurs objets à tester, penser "boucle" ;-)

+0

C'est ce que je fais en C# lol. Merci! :) –

Questions connexes