我只是张贴了整个事情的工作,因为这将是一个有点混淆,否则:卷曲似乎并不在一个while循环
<?php
echo "<html>
<head>
<title>ARMORY.</title>
<meta http-equiv='Content-Type' content='text/html' charset=iso-8859-1>
</head>
<body>
<table width='50%' border='1' cellpadding='10' cellspacing='10'>";
$server = "Sunstrider";
$guild = "Mist";
$url='http://eu.wowarmory.com/guild-info.xml?r='.$server.'&gn='.$guild.'&p=1';
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
$xml = curl_exec($ch);
$rosterxml = new SimpleXMLElement($xml);
curl_close($ch);
$array = array();
foreach($rosterxml->guildInfo->guild->members->character as $char)
if(strtolower($char['level']) === '80')
{
$array[] = $char['name']."<br />";
}
echo "
<tr>
<td valign='middle'>Name</td>
<td valign='middle'>TEST</td>
</tr>";
$i = 0;
while($array[$i] != null)
{
$name = $array[$i];
$raidurl='http://eu.wowarmory.com/character-achievements.xml?r='.$server.'&cn='.$name.'&c=168';
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $raidurl);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
$xml2 = curl_exec($ch);
$achievementxml = new SimpleXMLElement($xml2);
curl_close($ch);
var_dump($achievement);
echo "<tr>
<td>$array[$i]</td>
<td></td>
</tr>";
$i++;
}
?>
</body>
</html>
这$成就的var_dump刚刚产生NULL一遍遍(显然是由于循环)而不是关于数组的任何信息。做一个$ rosterxml的var_dump会产生预期的效果,所以cURL似乎在while循环之外很好地工作。
你测试了它在循环内部试图访问的URL吗? – Fosco 2010-07-21 18:46:11
请看这里如何处理curl错误:http://fr.php.net/manual/en/function.curl-error.php – greg0ire 2010-07-21 18:47:35
我仍然更喜欢'libxml_set_streams_context()'反用户代理 - 嗅探解决方案: ) – Wrikken 2010-07-21 18:53:28