2014-09-02 76 views
1

這是我從表中提取數據的代碼。使用curl和正則表達式獲取表數據

但我想刪除鏈接。

以及如何標題和價格陣列。

<?php 

$ch = curl_init ("http://www.digionline.ir/Allprovince/CategoryProducts/cat=10301"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$page = curl_exec($ch); 

preg_match('#<table[^>]*>(.+?)</table>#is', $page, $matches); 
foreach ($matches as &$match) { 
$match = $match; 
} 
echo '<table>'; 

echo $match ; 
echo '</table>'; 

?> 
+0

什麼是最終的輸出? – Ghost 2014-09-02 07:54:41

+0

提取產品名稱和價格//語言是波斯語 – 2014-09-02 08:05:29

+0

並將所有數據放入數組中? – Ghost 2014-09-02 08:07:41

回答

2

我建議使用一個HTML解析器,而不是。使用DOMDocument + DOMXpath,無需安裝它們已內置。例如:

$ch = curl_init ("http://www.digionline.ir/Allprovince/CategoryProducts/cat=10301"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$page = curl_exec($ch); 

$dom = new DOMDocument(); 
libxml_use_internal_errors(true); 
$dom->loadHTML($page); 
libxml_clear_errors(); 
$xpath = new DOMXpath($dom); 

$data = array(); 
// get all table rows and rows which are not headers 
$table_rows = $xpath->query('//table[@id="tbl-all-product-view"]/tr[@class!="rowH"]'); 
foreach($table_rows as $row => $tr) { 
    foreach($tr->childNodes as $td) { 
     $data[$row][] = preg_replace('~[\r\n]+~', '', trim($td->nodeValue)); 
    } 
    $data[$row] = array_values(array_filter($data[$row])); 
} 

echo '<pre>'; 
print_r($data); 

$data應包含以下內容:

Array 
(
    [0] => Array 
    (
     [0] => AMDA4-3400 
     [1] => 1,200,000 
     [2] => 1,200,000 
    ) 

    [1] => Array 
    (
     [0] => AMDSempron 145 
     [1] => 860,000 
     [2] => 910,000 
    ) 
+0

非常感謝。 – 2014-09-02 08:32:09

+0

@amirrasabeh肯定沒有問題很高興幫助 – Ghost 2014-09-02 08:32:27

+0

如何每天更新頁面捲曲當然我猜惠特玉米工作可以更新頁面..但我不知道如何與 – 2014-09-03 20:11:47

0

如果你想解析某些網絡資源時,可以使用PHP Simple HTML DOM Parser

如果你想獲得一個表,表裏面的所有鏈接:

$html = file_get_html('http://www.digionline.ir/Allprovince/CategoryProducts/cat=10301'); 
$table = $html->find('table'); 
$links = $table->find('a'); 

echo $table;