我正在使用cURL来获取Google中特定搜索的结果数量。
我使用 preg_match 来提取这样的数据:
preg_match('/About (.*?) results/sim',$google_url_contents, $regs)
并且像这样:
preg_match('/Results .*? of about (.*?) from/sim', $google_url_contents, $regs)
但是,对于少于10个结果,我在数字之前没有文本字符串,所以我不知道如何解析它。
Google提供的HTML输出如下所示:
<div id="resultStats">6 results<nobr> (0.11 seconds) </nobr></div>
在此示例中,如何将 6 提取为整数?
注意:我暂时不想使用 Google Search API 。
答案 0 :(得分:2)
您可以使用preg_match('/resultStats\D*([\d,]+)/', $line, $matches)
function get_number_of_results($line) {
if (preg_match('/resultStats\D*([\d,]+)/', $line, $matches)) {
echo "$matches[1]\n"; # for debug only
$value = (int) str_replace(',', '', $matches[1]);
return $value;
}
return -1;
}
$line = '<div id="resultStats">6 results<nobr> (0.11 seconds) </nobr></div>';
var_dump(get_number_of_results($line));
$line = '<div id="resultStats">About 6,100,000 results<nobr> (0.11 seconds) </nobr></div>';
var_dump(get_number_of_results($line));
输出:
6
int(6)
6,100,000
int(6100000)
\D
表示非数字字符。 \D*
是0位或更多位非字母字符。 [\d,]
是数字或逗号的字符类,[\d,]+
表示其中的一个或多个。