如何检查php数组中是否存在单词?

时间:2019-06-17 15:09:25

标签: php curl

我正在使用curl抓取网页,并且可以显示感兴趣的结果。

通常,下面的脚本会向我输出“网页抓取工具测试文本”文本,该文本由页面中的“标题” ID刮取并进行正则表达式处理。

现在,我想检查$ list数组中是否存在单词“ TESTING”。如果是,则仅回显“存在”,否则,则回显“不存在”。最好的方法是什么?

我知道如何搜索网页并从中提取文本部分。

 $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 :(得分:0)

  

我知道如何搜索网页并从中提取文本部分。

实际上,您正在做very wrong。     该代码实际上应该类似于

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

如果您想学习如何在PHP中正确解析HTML,请阅读线程> How do you parse and process HTML/XML in PHP?

  

现在,我想检查$ list数组中是否存在单词“ TESTING”。如果是,则仅回显“存在”,否则,则回显“不存在”。最好的方法是什么?

找到一个布尔,用foreach对其进行迭代,使用strpos()检查列表中的每个条目,如果发现它,请确保尽早退出循环(因为继续循环将浪费CPU和时间找到匹配项后),最后打印结果,例如

$found=false;
foreach($list as $foo){
    if(false!==strpos("TESTING",$foo)){
        $found=true;
        break;
    }
}
if($found){
    echo "present";
}else{
    echo "not present";
}