2010-08-28 41 views
0

我想從newegg獲取產品的價格。繼承人從本網站爲例網站需要從多個網站獲得div的內容

http://www.newegg.com/Product/Product.aspx?Item=**N82E16820167027** 

,我想獲得的<div class="grpPricing">的內容,包含了價格。

我不是很擅長做的代碼,所以我在網上搜索代碼,並用它作爲一個例子來讓我自己......繼承人到目前爲止結果:

function getprice($itemId) { 
    $source=trim("http://www.newegg.com/Product/Product.aspx?Item=".$itemId); 

    preg_match("'<div class=\"grpPricing\">(.*?)</div>'si", $source, $match); 
    if($match) 
     echo "result=".$match[1]; 
} 

$itemId給出,這是我如何可以使一個腳本,循環通過多個newegg產品,並獲得所需的信息

注意:它不會讓我發佈代碼,因爲它應該是真的,不知道爲什麼,也許是因爲我沒有註冊?!

和那裏有我不能解決另一個問題...代碼的輸出應該是:

return strip_tags($price); 

,只是因爲以後我會調用該函數這一行

$price=getprice($row['newegg_productid']); 

我用盡我最好清楚地解釋一下,但是如果你理解困難,請告訴我。任何幫助非常感謝,謝謝!

+0

你現在正在做的可能是很簡單的逃脫,但是,http://www.codinghorror.com/blog/2009/11/parsing-html -the-邪神 - way.html。如果你想擴展你正在做的事情,考慮一些比正則表達式更適合的東西。 – 2010-08-28 19:44:37

+0

「用正則表達式解析HTML會讓感染靈魂進入生命的領域。」我明白了:)沒有辦法,shamittomar的答案似乎是選擇的路徑。感謝評論! – crashtest 2010-08-28 22:59:37

回答

1

爲了您的領先地位:

<?php 
function get_string_between($string, $start, $end) 
{ 
    $string = " ".$string; 
    $ini = strpos($string,$start); 
    if ($ini == 0) 
     return ""; 
    $ini += strlen($start); 
    $len = strpos($string,$end,$ini) - $ini; 
    return substr($string,$ini,$len); 
} 
$data = file_get_contents("http://www.newegg.com/Product/Product.aspx?Item=N82E16820167027"); 

$pricediv = get_string_between($data, '<div class="grpPricing">', '<div class="grpAction">'); 

$pricetext = strip_tags($pricediv); 

echo $pricetext; 
?> 
+0

這段代碼自行運作得非常好!但在一個問題來了另一個...我不能將它集成到我已經得到的代碼... 由於字符限制我決定打開一個新的問題,這個問題,你可以在這裏找到:http:// stackoverflow .com/questions/3592916/integrate-a-function 感謝您的幫助! – crashtest 2010-08-28 23:34:50