Php полосы для поиска двух слов в одном URL

Я хочу, чтобы этот скрипт считывал каждую строку (все 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] … НАЙДЕНО СЛОВО о
… НАЙДИТЕ СЛОВО нас

-1

Решение

Вы можете сделать это простым способом с помощью такой функции:

<?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,

0

Другие решения

Я бы сделал что-то вроде этого:

$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/>";
}
}
0

По вопросам рекламы [email protected]