在我的应用程序中,我试图获取谷歌索引页面,我知道该数字在以下 div 中可用
<div id="resultStats"> About 1,960,000 results (0.38 seconds) </div>
现在我的问题是如何从网页中的 div 上方提取数字
在我的应用程序中,我试图获取谷歌索引页面,我知道该数字在以下 div 中可用
<div id="resultStats"> About 1,960,000 results (0.38 seconds) </div>
现在我的问题是如何从网页中的 div 上方提取数字
永远不要使用正则表达式来解析 HTML。(参见:RegEx 匹配开放标签,XHTML 自包含标签除外)
使用 HTML 解析器,例如 SimpleDOM ( http://simplehtmldom.sourceforge.net/ )
您可以使用 CSS 规则来选择:
$html = file_get_html('http://www.google.com/');
$divContent = $html->find('div#resultStats', 0)->plaintext;
$matches = array();
preg_match('/([0-9,]+)/', $divContent, $matches);
echo $matches[1];
Outputs: "1,960,000"
$str = '<div id="resultStats"> About 1,960,000 results (0.38 seconds) </div> ';
$matches = array();
preg_match('/<div id="resultStats"> About ([0-9,]+?) results[^<]+<\/div>/', $str, $matches);
print_r($matches);
输出:
Array (
[0] => About 1,960,000 results (0.38 seconds)
[1] => 1,960,000
)
这是带有子模式的简单正则表达式
([0-9,]+?)
- 表示 0-9 个数字和 , 字符至少 1 次且不贪心。[^<]+
- 表示每个字符,但 < 超过 1 次echo $matches[1];
- 将打印您想要的号码。
您可以为此使用正则表达式( preg_match )
$your div_string = '<div id="resultStats"> About 1,960,000 results (0.38 seconds) </div>';
preg_match('/<div.*>(.*)<\/div>/i', $your div_string , $result);
print_r( $result );
输出将是
Array (
[0] => <div id="resultStats"> About 1,960,000 results (0.38 seconds) </div>
[1] => About 1,960,000 results (0.38 seconds)
)
这样你就可以在div里面获取内容