Php stripos 用于在一个单词中找到两个单词 url

Php stripos for finding two words in one url

我希望这个脚本从文本文件中读取每一行(都是 urls)并解析它以检查两个给定的单词是否存在于该特定文件的任何 urls 中网站。我还希望文本文件中的所有 urls(行)按顺序打印。这段代码找出了这两个词,但我不确定它们是否来自该站点的同一个 url。它显示给定单词出现的次数而不是序列号。

<?php  
$mysearch = file("phpelist.txt");  

for($index = 0; $index <count($mysearch); $index++)  
{

    $mysearch[$index] = str_replace("\n", "", $mysearch[$index]);  
    $data = file_get_contents("$mysearch[$index]");  

    $searchTerm1 = 'about'; 

 if (stripos($data, $searchTerm1) !== false) {
     echo "$counter$.mysearch[$index]... FOUND WORD $searchTerm1<br>";
     $searchTerm2 = 'us';
     if (stripos($data, $searchTerm2) !== false) {
        echo "... FOUND WORD $searchTerm2<br>";
        } 
}    

    else
        { 
        echo "<br>";
        echo "$mysearch[$index]...not found<br>";
        }    
}
?>

脚本输出如下:

'url1'...未找到

'url2'...未找到

'url3'...未找到

'url4'...未找到

'url5'...未找到 $.mysearch[5]... 找到关于 ...找到我们 $.mysearch[6]... 找到关于 ...找到我们 $.mysearch[7]... 找到关于 ... 找到了我们

'url6'...未找到 $.mysearch[9]... 找到关于 ...找到我们 $.mysearch[10]... 找到关于 ...找到我们 $.mysearch[11]... 找到关于 ...找到我们 $.mysearch[12]... 找到关于 ...找到我们 $.mysearch[13]... 找到关于 ... 找到了我们

您可以通过这样的函数以简单的方式完成:

<?php
    function findWordsInString($str, $arr) {
        $found = array();
        foreach ($arr as $cur) {
            if (stripos($str, $cur) !== false)
                $found[$cur] = stripos($str, $cur);
        }
        return $found;
    }
?>

然后,根据返回值,您可以运行 array_keys 得到找到的字符串值。它们的索引存储位置。

举个例子:

$str = "Hello, world. How are you?";
$arr = array("Hello", "world", "you", "Hi");

这将给出如下输出:

array(3) {
  ["Hello"]=>
  int(0)
  ["world"]=>
  int(7)
  ["you"]=>
  int(22)
}

本例中只找到Helloworldyou,分别在077的位置22.

我会这样做:

$fp = file("phpelist.txt");
$urlList = file_get_contents($fp);
$urls = explode("\n", $urlList);

$counter = 0;
foreach ($urls as $url) {
  $counter++;
  if (preg_match_all('#\b(word1|word2)\b#',  $url, $matches)) {
      echo "line: $counter url : $url <br/>";
  }
}