【问题标题】:stristr Case-insensitive search PHPstristr 不区分大小写的搜索 PHP
【发布时间】:2011-03-31 11:00:07
【问题描述】:

请原谅我的菜鸟!

我有一个$string,想看看它是否包含一组单词中的任何一个或多个,单词link ct, fu, sl** ETC。所以我想我可以这样做:

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

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

我不能只做一个 switch 语句或有一个数组,然后简单地说类似的东西吗?:

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

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

如果有任何帮助,我将不胜感激

谢谢

【问题讨论】:

  • 你为什么要引用变量?
  • 因为这就是我在 php 手册网站上学会做 stristr 的方式:php.net/manual/en/function.stristr.php :)
  • 基本上,任何对坏词过滤的尝试都是徒劳的。只需通过字母变化,我就可以轻松地通过任何半个$$ed 过滤器。如果这是一项可以完成的任务,那么就不会再有 V1agra 垃圾邮件了。分析整个文本并给它一个淫秽等级,如果它超过阈值,则根本不要显示它。
  • 是的,我知道。但是我根本没有因为一份应该付出代价的工作而得到太多报酬。所以,我真的不在乎。他们得到他们所支付的......

标签: php search replace string


【解决方案1】:
$dirty = array("fuc...", "pis..", "suc..");
$censored = array("f***", "p***", "s***");

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

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

【讨论】:

  • 我喜欢你的选择,哈哈。谢谢! :D 如果允许我会在 10 分钟内接受 :)
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    当你有几个对象要测试时,想想“循环”;-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 2010-09-15
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-26
      相关资源
      最近更新 更多