PHP:根据坏词数组检查URL,并输出找到的任何内容

PHP:根据坏词数组检查URL,并输出找到的任何内容,php,arrays,string,Php,Arrays,String,我有一个数据库,其中包含记录的网络流量的结果,我正在用PHP构建一个简单的日志查看器前端。我需要检查每个URL,看看它是否包含外部“badwords.txt”文件中的任何“坏单词”,然后回显哪些,并将表格行涂成红色(简单一点!) 到目前为止,我已经将badwords.txt文件加载到一个数组中,并从数据库中获取URL。下面是我的代码部分,我正试图获得一个确定的“坏”url。理想情况下,我想输出发现的坏词,但我已经简化了一切,现在只需尝试让它工作 // Load the badwords

我有一个数据库,其中包含记录的网络流量的结果,我正在用PHP构建一个简单的日志查看器前端。我需要检查每个URL,看看它是否包含外部“badwords.txt”文件中的任何“坏单词”,然后回显哪些,并将表格行涂成红色(简单一点!)

到目前为止,我已经将badwords.txt文件加载到一个数组中,并从数据库中获取URL。下面是我的代码部分,我正试图获得一个确定的“坏”url。理想情况下,我想输出发现的坏词,但我已经简化了一切,现在只需尝试让它工作

    // Load the badwords file into an array
    $words = file('badwords.txt');

    //$row[3] is the URL fetched from the database
    $testURL = $row[3];

    foreach ($words as $phrase) {
      if (strrpos($testURL, $phrase)) {
        echo "FOUND";
      }
    }
这对我不起作用,而且永远也找不到输出,即使url肯定包含一个坏单词。我已经检查了我的
$words
数组是否正确填充了所有坏词,并且检查了
$testURL
是否为空等

谁能帮忙吗?:)我真的非常感谢您的帮助——我已经阅读了很多关于类似主题的StackExchange帖子,但似乎没有一篇适合我的案例


谢谢大家!

单词数组包含换行符,因此strpos永远不会工作。移除它们

$words = file('badwords.txt', FILE_IGNORE_NEW_LINES);

单词数组包含换行符,所以strpos永远不起作用。移除它们

$words = file('badwords.txt', FILE_IGNORE_NEW_LINES);
由于strrpos()返回针的数字位置,布尔值为false,所以代码应该是

<?php
 // Load the badwords file into an array
  $words = file('words.txt', FILE_IGNORE_NEW_LINES);

//$row[3] is the URL fetched from the database
$testURL = row[3];

foreach ($words as $phrase) {
  if (strrpos($testURL, $phrase)>-1) {
    echo "FOUND";
  }
}
因为strrpos()返回针的数字位置,而布尔值为false,所以代码应该是

<?php
 // Load the badwords file into an array
  $words = file('words.txt', FILE_IGNORE_NEW_LINES);

//$row[3] is the URL fetched from the database
$testURL = row[3];

foreach ($words as $phrase) {
  if (strrpos($testURL, $phrase)>-1) {
    echo "FOUND";
  }
}

^只需使用
stripos
即可^只需使用
stripos
instead我不知道这个问题,非常感谢您指出这一点。非常感谢。我没有意识到这个问题,非常感谢你指出这一点。非常感谢。感谢您指出关于strpos()的内容,以及改进的代码等:)现在可以正确地返回find for me!有什么建议可以帮助我简单地判断哪些词是匹配的,还是我太迂腐了?如果这样做变得越来越复杂,那么当前的代码将为我提供足够的信息来标记日志条目。再次感谢!只是附和$phrace;在回声“发现”之后;这将呼应匹配的单词。完美,这正是我所希望的!现在快凌晨2点了,所以我现在可以平静地退休了。。再次感谢!:如果需要,可以回显“
”;在echo“发现”之后;所以它会打印一个换行符。它使文本更具可读性。感谢您指出关于strpos()的内容,以及改进的代码等:)这现在可以正确地返回Find for me!有什么建议可以帮助我简单地判断哪些词是匹配的,还是我太迂腐了?如果这样做变得越来越复杂,那么当前的代码将为我提供足够的信息来标记日志条目。再次感谢!只是附和$phrace;在回声“发现”之后;这将呼应匹配的单词。完美,这正是我所希望的!现在快凌晨2点了,所以我现在可以平静地退休了。。再次感谢!:如果需要,可以回显“
”;在echo“发现”之后;所以它会打印一个换行符。它使文本更具可读性。