如何使用PHP从ul li标签中抓取每个数据值?
发布时间:2020-12-13 15:55:29 所属栏目:PHP教程 来源:网络整理
导读:我有一个包含 HTML代码的页面,如下所示: ul class ='trainList'li div class="smallFont farelist no-discount " div class="train-no"ABC 701/div div class="train-time"06:10br07:15/div div class="train-info" div class="box" div class="total-price
我有一个包含
HTML代码的页面,如下所示:
<ul class ='trainList'> <li> <div class="smallFont farelist no-discount "> <div class="train-no">ABC 701</div> <div class="train-time">06:10<br>07:15</div> <div class="train-info"> <div class="box"> <div class="total-price">MYR 50.00</div> <div class="farediscount"> <div class="actual-fare-price">Array</div> <div class="train-discount"></div> </div> </div> </li> <li> <div class="smallFont farelist no-discount "> <div class="train-no">ABC 701</div> <div class="train-time">06:10<br>07:15</div> <div class="train-info"> <div class="box"> <div class="total-price">MYR 50.00</div> <div class="farediscount"> <div class="actual-fare-price">Array</div> <div class="train-discount"></div> </div> </div> </li> 我想从上面的代码中搜索和提取火车号码,训练时间和火车价格. 我的代码没有刮掉我想要的信息,但给了我空白.我查过很多以前发过的问题,但是找不到类似的东西. 我的代码: $train_doc = new DOMDocument(); libxml_use_internal_errors(TRUE); if(!empty($html)){ $train_doc->loadHTML($html); libxml_clear_errors(); $train_xpath = new DOMXPath($train_doc); $train_list = array(); $train = $train_xpath->query('//div[@class="smallFont farelist no-discount"]'); var_dump($train); if($train->length > 0){ foreach($train as $pat){ $name = $train_xpath->query('div[@class="train-no"]',$pat)->item(0)->nodeValue; $train_types = array(); $types = $train_xpath->query('div[@class="train-time"]/a',$pat); foreach($types as $type){ $train_types[] = $type->nodeValue; $train_list[] = array('name' => $name,'types' => $train_types); } } } echo "<pre>"; print_r($train_list); echo "</pre>"; 解决方法
首先需要指向元素,首先获取每个li然后指向所需的元素:
$train_list = array(); $train = $train_xpath->query('//li/div[contains(@class,"smallFont farelist no-discount")]'); if($train->length > 0) { foreach($train as $t) { $time_s = $train_xpath->evaluate('string(./div[@class="train-time"]/text()[1])',$t); $time_e = $train_xpath->evaluate('string(./div[@class="train-time"]/text()[2])',$t); $train_list[] = array( 'train_no' => $train_xpath->evaluate('string(./div[@class="train-no"])',$t),'train_time' => "$time_s - $time_e",'train_price' => $train_xpath->evaluate('string(./div[@class="train-info"]/div/div[@class="total-price"])',); } } Sample Output (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |