1

php で curl lib を使用すると問題が発生します。私が達成したいのは、curl で呼び出された 2 つの異なる 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
**/

最初の呼び出しを行うと値を抽出できますが、2 番目の呼び出しを行うと値を抽出できますが、それらは最初の呼び出しの値です。

4

2 に答える 2

1

このコードは正常に機能し、2つの異なるページを返します。指定したように次々に抽出するのではなく、両方の呼び出しの後に抽出を行うことは可能ですか?その場合、$ result20を2回使用すると、それらは一致します。

これらのURLをブラウザに直接ロードすると、異なるページが返されますか(私にとっては返されます)。

于 2009-09-02T02:46:28.833 に答える
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);
于 2009-09-02T15:31:30.870 に答える