Как я могу проверить, присутствует ли слово в массиве в php? - PullRequest
0 голосов
/ 17 июня 2019

Я использую curl для просмотра веб-страниц и могу отображать интересующий вас результат.

Как правило, приведенный ниже скрипт выводит мне текст ЗЕМЛИ ИСПЫТАНИЯ ВЕБ-СКРЕПАРА, который очищается и regex'ed идентификатором «title» со страницы.

Теперь я хотел бы проверить, присутствует ли слово "TESTING" в массиве $ list. Если да - просто эхо "нет", если нет - эхо "нет". Каков наилучший способ сделать это?

Я знаю, как искать веб-страницу и извлекать из нее части текста.

 $curl = curl_init('http://testing-ground.scraping.pro/textlist'); // cURL 
 setup

curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); //  return the transfer 
page as a string
curl_setopt($curl, CURLOPT_HEADER, TRUE);


$page = curl_exec($curl); // executing the request

if(curl_errno($curl)) // check for execution errors
{
    echo 'Scraper error: ' . curl_error($curl);
    exit;
}

curl_close($curl); // closing the connection

$regex = '/<div id="title">(.*?)<\/div>/s'; // extracting the needed part

if ( preg_match($regex, $page, $list) ) // search matches of $page with 
$regex
    echo $list[0];
else
    print "Not found";

1 Ответ

0 голосов
/ 17 июня 2019

Я знаю, как искать веб-страницу и извлекать из нее части текста.

на самом деле, вы делаете это очень неправильно . код должен выглядеть примерно так:

$list[]=(@DOMDocument::loadHTML($page))->getElementById("title")->textContent;

если вы хотите узнать, как правильно анализировать HTML в PHP, прочитайте ветку> Как анализировать и обрабатывать HTML / XML в PHP?

Теперь я хотел бы проверить, присутствует ли слово "TESTING" в массиве $ list. Если да - просто эхо "нет", если нет - эхо "нет". Каков наилучший способ сделать это?

сделайте bool найденным, итерируйте его с помощью foreach, проверьте каждую запись в списке с помощью strpos (), позаботьтесь о раннем прерывании цикла, если вы его найдете (потому что продолжение цикла будет пустой тратой времени и ресурсов процессора после совпадения) и, наконец, выведите результат, например

$found=false;
foreach($list as $foo){
    if(false!==strpos("TESTING",$foo)){
        $found=true;
        break;
    }
}
if($found){
    echo "present";
}else{
    echo "not present";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...