我在使用curl lib时遇到问题。我想要完成的是从多个使用curl调用的不同URL返回多个请求拉xml。这是代码:
$BROWSER="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 YFF3 Firefox/3.0.1";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.wowarmory.com/character-sheet.xml?r=Crushridge&n=Thief");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $BROWSER);
$result20 = curl_exec($ch);
curl_close ($ch);
/**
I extract the values out of the xml here
**/
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.wowarmory.com/character-sheet.xml?r=Ursin&n=Kiona");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $BROWSER);
$result20 = curl_exec($ch);
curl_close ($ch);
/**
I extract the values out of the xml here
**/
当我进行第一次调用时,我可以提取值,但是当我进行第二次调用时,我可以提取值,但它们是第一次调用的值。
答案 0 :(得分:1)
此代码工作正常,它返回两个不同的页面。是否有可能在两次调用之后进行提取,而不是按照您的指定一个接一个地进行提取?如果是这样,那么当你使用$ result20两次时它们会匹配。
如果您直接在浏览器中加载这些网址,他们会返回不同的网页(它们适用于我)。
答案 1 :(得分:0)
代码也适用于我。正如Justin建议的那样,你可能会覆盖你提取的数据。
我可以建议少冗余的代码吗?例如:
$urls = array('http://www.wowarmory.com/character-sheet.xml?r=Crushridge&n=Thief',
'http://www.wowarmory.com/character-sheet.xml?r=Ursin&n=Kiona');
$browser = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 YFF3 Firefox/3.0.1';
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $browser);
foreach ($urls as $url) {
curl_setopt($ch, CURLOPT_URL, $url);
$result20 = curl_exec($ch);
// Extract the values out of the xml here (to separate variables).
}
curl_close($ch);