我希望使用curl从远程服务器抓取带有div id的div数据。实际上这是正则表达式的问题,我把页面内容放在一个变量中,例如:
$url = "http://www.google.co.in/";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$content = curl_exec($ch);
curl_close($ch);
获取数据的正则表达式的正确语法是什么?
$content = "<div id="cat_list">
<h4>Browse by Category</h4>
<ul>
<li class="a"><a href="link1.php">category1</a></li>
<li class="b"><a href="link2.php">category2</a></li>
</ul>
</div>";
我需要这里所有的类别名称
这里有一个正则表达式,如果你想用它来代替解析器,因为它可能更快,使用更少的开销。
$content = <<<EOD
<div id="cat_list">
<h4>Browse by Category</h4>
<ul>
<li class="a"><a href="link1.php">category1</a></li>
<li class="b"><a href="link2.php">category2</a></li>
</ul>
</div>
EOD;
$categories = array();
if (preg_match('/<div id="cat_list">(.*?)</div>/is', $content, $cat_list)) {
$matches = preg_match_all('/<li[^>]*><a href="([^"]+)">([^<]+)</a>/i', $cat_list[1], $cats);
for ($i = 0; $i < $matches; ++$i) {
$categories[$cats[2][$i]] = array('href' => $cats[1][$i], 'name' => $cats[2][$i]);
}
}
var_dump($categories);
结果:
array(2) {
["category1"]=>
array(2) {
["href"]=>
string(9) "link1.php"
["name"]=>
string(9) "category1"
}
["category2"]=>
array(2) {
["href"]=>
string(9) "link2.php"
["name"]=>
string(9) "category2"
}
}