Я хочу, чтобы этот скрипт считывал каждую строку (все URL-адреса) из текстового файла и анализировал ее, чтобы проверить, существуют ли два заданных слова в любом из URL-адресов этого конкретного веб-сайта. Я также хочу, чтобы все URL-адреса (строки) в текстовом файле были напечатаны последовательно пронумерованы. Этот код обнаруживает эти два слова, но я не уверен, относятся ли они к одному и тому же 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
, а также 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/>";
}
}