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)
}
本例中只找到Hello
、world
、you
,分别在0
、7
、7
的位置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/>";
}
}
我希望这个脚本从文本文件中读取每一行(都是 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)
}
本例中只找到Hello
、world
、you
,分别在0
、7
、7
的位置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/>";
}
}