stristr不区分大小写的搜索PHP

时间:2010-08-18 09:41:16

标签: php search replace string

请原谅我的noob-iness!

我有一个$ string,想看看它是否包含任何一个或多个单词,单词链接c t,fu ,sl ** ETC.所以我想我能做到:

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

... ETC。但是,我不想继续做if if / elseif / elseif / elseif / elseif ...

我不能只是做一个switch语句或者有一个数组,然后简单地说出像?:

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

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

我很感激任何帮助

谢谢

3 个答案:

答案 0 :(得分:3)

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

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

注意,您不必检查stristr()来执行str_ireplace()

答案 1 :(得分:0)

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

  

如果搜索和替换是数组,则str_ireplace()从每个数组中获取一个值,并使用它们对主题进行搜索和替换。如果replace的值小于search,则空字符串将用于其余的替换值。如果search是一个数组而replace是一个字符串,那么这个替换字符串将用于搜索的每个值。

答案 2 :(得分:0)

肯定不是最好的解决方案,因为我不太了解PHP,但是循环呢?

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

如果要测试多个对象,请考虑“循环”; - )