file_get_contents没有获取正确的结果

时间:2014-05-01 13:07:26

标签: php regex file-get-contents

我正在尝试从游戏和亚马逊的个人项目中获取价格,但我有2个问题。 首先,我有工作,但它的价格错误,其次亚马逊不会取得任何结果。

这是我一直努力工作的代码。

$playdotcom = file_get_contents('http://www.play.com/Search.html?searchstring=".$getdata[getlist_item]."&searchsource=0&searchtype=r2alldvd');
$amazoncouk = file_get_contents('http://www.amazon.co.uk/gp/search?search-alias=dvd&keywords=".$getdata[getlist_item]."');

preg_match('#<span class="price">(.*)</span>#', $playdotcom, $pmatch);
$newpricep = $pmatch[1];
preg_match('#used</a> &nbsp;from&nbsp; <strong>(.*)</strong>#', $playdotcom, $pmatch);
$usedpricep = $pmatch[1];

preg_match('#<span class="bld lrg red"> (.*)</span>#', $amazoncouk, $amatch);
$newpricea = $amatch[1];
preg_match('#<span class="price bld">(.*)</span> used#', $amazoncouk, $amatch);
$usedpricea = $amatch[1];

然后回应结果:

echo "Play :: New: $newpricep - Used: $usedpricep";
echo "Amazon :: New: $newpricea - Used: $usedpricea";

只是让你知道发生了什么

$getdata[getlist_item] = "American Pie 5: The Naked Mile";

工作正常。

知道为什么这些都没有正常工作?

编辑:我刚刚意识到file_get_contents中的$getdata[getlist_item]没有使用变量,只是按原样打印变量......为什么要这样做?

2 个答案:

答案 0 :(得分:1)

您使用的报价并不一致!您的开盘价和收盘价都必须相同。

试试这个:

$playdotcom = file_get_contents("http://www.play.com/Search.html?searchstring=".$getdata['getlist_item']."&searchsource=0&searchtype=r2alldvd");
$amazoncouk = file_get_contents("http://www.amazon.co.uk/gp/search?search-alias=dvd&keywords=".$getdata['getlist_item']);

因为它是&#34;。$ getdata [getlist_item]。&#34;被认为是字符串的一部分,因为你从未关闭你发起的单引号字符串。

答案 1 :(得分:1)

使用curl函数和正确的标题。下面的代码将读取任何网页,然后使用适当的解析器DOMDocument或simpleHTMLDomParser工具从html内容中读取价格

$playdotcom = getPage("http://www.play.com/Search.html?searchstring=".$getdata['getlist_item']."&searchsource=0&searchtype=r2alldvd");
$amazoncouk = getPage("http://www.amazon.co.uk/gp/search?search-alias=dvd&keywords=".$getdata['getlist_item']);

function getPage($url){
$user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';
$options = array(
    CURLOPT_CUSTOMREQUEST  =>"GET",
    CURLOPT_POST           =>false,
    CURLOPT_USERAGENT      => $user_agent,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER         => false,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_ENCODING       => 'gzip',
    CURLOPT_AUTOREFERER    => true,
    CURLOPT_CONNECTTIMEOUT => 30000,
    CURLOPT_TIMEOUT        => 30000,
    CURLOPT_MAXREDIRS      => 10,
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
curl_close( $ch );
return $content;
}