【发布时间】:2017-01-07 11:15:49
【问题描述】:
我有以下 PHP curl 和正则表达式代码。我想从网站获取帖子标题。实际上,有10篇文章。但代码返回零结果。
PHP:
<?php
$ch = curl_init();
$url = "www.mahsumakbas.net";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$content = curl_exec($ch);
curl_close($ch);
@preg_match_all('/<h2 class="entry-title">(.*)<\/h2>/' ,$content, $matches);
for ($i=0; $i< sizeof($matches[1]); $i++)
echo $matches[1][$i]."<br/>";
?>
在 www.mahsumakbas.net 网页上有 10 个<h2 class="entry-title"> 附有</h2>
我错过了什么?
【问题讨论】:
-
当他们为那些 h2 添加一个简单的额外空间或额外属性时,你认为会发生什么? stackoverflow.com/a/1732454/1067003
-
tl;dr 是:不要使用正则表达式来解析 html。
$results=[];$domd=@DOMDocument::loadHTML($content);foreach($domd->getElementsByTagName("h2") as $h2){if($h2->getAttribute("class") !=="entry-title")continue;$matches[]=$h2->textContent;}var_dump($matches); -
for ($i=0; $i< sizeof($matches[1]); $i++)不是在 PHP 中循环遍历数组的方法,请改用foreach。
标签: php regex curl preg-match-all