下面是我想从中获取一些数据的html代码。
<div class="NS_projects__stats">
<div class="digits_4" id="stats">
<div class="row">
<div class="col col-12 mb1 stat-item">
<div class="num h1 bold" data-backers-count="107" id="backers_count">
<data class="Project1135352094" data-format="number" data-value="107" itemprop="Project[backers_count]">107</data>
</div>
<span class="bold h5">backers</span>
</div>
<div class="col col-12 mb1 stat-item">
<div class="num h1 bold nowrap" data-goal="8000.0" data-percent-raised="0.909875" data-pledged="7279.0" id="pledged">
<data class="Project1135352094" data-currency="EUR" data-format="shorter_money" data-precision="0" data-value="7279.0" data-without_code="true" itemprop="Project[pledged]">€7,279</data>
<span class="money eur project_currency_code"></span>
</div>
<span class="bold h5">
pledged of <span class="money eur no-code">€8,000</span>
<span class="mobile-hide">goal</span>
</span>
</div>
<span data-duration="30.041666666666668" data-end_time="2015-11-27T14:32:42-05:00" data-hours-remaining="566.7967307435142" id="project_duration_data"></span>
<div class="col col-12 stat-item">
<div class="num h1 bold">23</div>
<span class="text bold h5">days to go</span>
</div>
</div>
</div>
</div>
从上面的html代码我必须获取以下数据:
- 107支持者
- 7,279欧元认捐8,000欧元的目标
- 23天后
我成功地抓住了第一个,但却无法获取第二个和第三个。 下面是我的PHP代码(使用CURL)来获取第一个。
$html = get($url); //get function uses CURL and gets html data
$pattern = "/<div class=\"num h1 bold\"(.*?)<\/div>/s";
preg_match($pattern,$htm,$match);
$match[1] = "<div".$match[1]."</div>";
return strip_tags($match[1]);
答案 0 :(得分:0)
$pattern = "/<div class=\"num h1 bold\"(.*?)<\/div>/s";
$pattern2 = "/<div class=\"col col-12 mb1 stat-item\"(.*?)<\/div>/s";
$pattern3 = "/<div class=\"col col-12 stat-item\"(.*?)<\/div>/s";
答案 1 :(得分:0)
试试这个,
function rip_tags($string) {
// ----- remove HTML TAGs -----
$string = preg_replace ('/<[^>]*>/', ' ', $string);
// ----- remove control characters -----
$string = str_replace("\r", '', $string); // --- replace with empty space
$string = str_replace("\n", ' ', $string); // --- replace with space
$string = str_replace("\t", ' ', $string); // --- replace with space
// ----- remove multiple spaces -----
$string = trim(preg_replace('/ {2,}/', ' ', $string));
return $string;
}
$html = get($url); //get function uses CURL and gets html data
echo rip_tags($html);
结果:107支持者7,279欧元认捐8,000欧元目标23天后可根据要求进一步修改。如需参考,请查看here
答案 2 :(得分:0)
我建议将HTML-String解析为HTML ...
您可以使用http://php.net/manual/en/domdocument.loadhtml.php。
或其他一些第三方解析器。 (之前我使用过http://simplehtmldom.sourceforge.net,这很好。)