在我的应用程序中,我试图获取谷歌索引页面,我知道这个数字可用于以下div
<div id="resultStats"> About 1,960,000 results (0.38 seconds) </div>
现在我的问题是如何从网页上面的div中提取数字
答案 0 :(得分:4)
永远不要使用正则表达式来解析HTML。 (见:RegEx match open tags except XHTML self-contained tags)
使用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"
答案 1 :(得分:3)
$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次且不贪心。[^<]+
- 表示每个字符,但&lt;超过1次 echo $matches[1];
- 将打印您想要的号码。
答案 2 :(得分: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内的内容