0

私は配列を持っています:

Array ( [0] => Ahri [1] => Akali [2] => Alistar [3] => Amumu [4] => Anivia [5] =>  Annie [6] => Ashe [7] => Blitzcrank [8] => Brand [9] => Caitlyn [10] => Cassiopeia [11] => Cho'Gath [12] => Corki [13] => Dr. Mundo [14] => Evelynn [15] => Ezreal [16] => Fiddlesticks [17] => Fiora [18] => Fizz [19] => Galio [20] => Gangplank [21] => Garen [22] => Gragas [23] => Graves [24] => Hecarim [25] => Heimerdinger [26] => Irelia [27] => Janna [28] => Jarvan IV [29] => Jax [30] => Karma [31] => Karthus [32] => Kassadin [33] => Katarina [34] => Kayle [35] => Kennen [36] => Kog'Maw [37] => LeBlanc [38] => Lee Sin [39] => Leona [40] => Lulu [41] => Lux [42] => Malphite [43] => Malzahar [44] => Maokai [45] => Master Yi [46] => Miss Fortune [47] => Mordekaiser [48] => Morgana [49] => Nasus [50] => Nautilus [51] => Nidalee [52] => Nocturne [53] => Nunu [54] => Olaf [55] => Orianna [56] => Pantheon [57] => Poppy [58] => Rammus [59] => Renekton [60] => Riven [61] => Rumble [62] => Ryze [63] => Sejuani [64] => Shaco [65] => Shen [66] => Shyvana [67] => Singed [68] => Sion [69] => Sivir [70] => Skarner [71] => Sona [72] => Soraka [73] => Swain [74] => Talon [75] => Taric [76] => Teemo [77] => Tristana [78] => Trundle [79] => Tryndamere [80] => Twisted Fate [81] => Twitch [82] => Udyr [83] => Urgot [84] => Varus [85] => Vayne [86] => Veigar [87] => Viktor [88] => Vladimir [89] => Volibear [90] => Warwick [91] => Wukong [92] => Xerath [93] => Xin Zhao [94] => Yorick [95] => Ziggs [96] => Zilean [97] => Lee Sin [98] => Orianna [99] => Yorick [100] => Leona [101] => Riven [102] => Lulu [103] => Hecarim [104] => Varus [105] => Malphite [106] => Morgana [107] => Ryze [108] => Annie [109] => Cho'Gath [110] => Taric [111] => Jax [112] => Teemo [113] => Warwick [114] => Poppy [115] => Garen [116] => Anivia [117] => Blitzcrank [118] => Corki [119] => Karthus [120] => Twitch [121] => Irelia [122] => Miss Fortune [123] => Galio [124] => Swain [125] => Kennen [126] => Malzahar ) 

次の関数内でこれらの値をそれぞれ使用する必要があります。

$input=file_get_contents("http://leagueoflegends.wikia.com/api.php?action=query&titles=$value&prop=revisions&rvprop=content&format=xml");

は配列$valueの値です (例: Ahri)。

どうすればこれを達成できますか?

編集:これらの値を取得するには、次のようにします。

$file = file_get_contents('http://leagueoflegends.wikia.com/api.php?action=query&titles=List_of_champions&prop=revisions&rvprop=content&format=xml');
preg_match_all('/{{ci\|([^}]*)}}/', $file, $matches);

$matches(上記の配列はどこにありますか。)

4

1 に答える 1

2

または、LeagueOfLegends API|の組み込みの方法を使用して、各タイトルを文字で区切ることにより、すべての値を同時に取得できます。そのようです:

$values = array("Ahri","Akali","Alistar");
$input  = "";

while($pack = array_splice($values,0,49)){
    $concatValues = implode("|",$values); // Will return "Ahri|Akali|Alistar";
    $url   = "http://leagueoflegends.wikia.com/api.php?action=query&titles=$concatValues&prop=revisions&rvprop=content&format=xml";
    $input .= file_get_contents($url);
}

コードの最初の 3 つの要素については、次のように返されます。1 つずつ実行できますが、API のエチケットでは、目的のデータを取得するために最小限のリクエストを実行することをお勧めします。

<api>
    <query>
    <pages>
        <page pageid="281432" ns="0" title="Ahri">
            <revisions>
                <rev xml:space="preserve">#REDIRECT [[Ahri the 9 Tails Fox]]</rev>
            </revisions>
        </page>
        <page pageid="5578" ns="0" title="Akali">
            <revisions>
                <rev xml:space="preserve">#REDIRECT [[Akali the Fist of Shadow]]</rev>
            </revisions>
        </page>
        <page pageid="2202" ns="0" title="Alistar">
            <revisions>
                <rev xml:space="preserve">#REDIRECT [[Alistar the Minotaur]]</rev>
            </revisions>
        </page>
        </pages>
    </query>
</api>

結果はキャッシュされることに注意してください。同じデータを 2 回取得する場合は、必ず同じリクエストを使用し、要素の順序を変更しないでください。新しい順序では新しい URL が作成され、結果が再度フェッチされるためです。 API キャッシュ バージョンを提供する代わりに、サーバーから。

アップデート

配列内の値を見ると、引用符を含む「タイトル」がいくつかあるため、URL が壊れる可能性があります。url encode使用する前に、URL をエンコードする必要があります。

于 2012-05-17T18:23:10.940 に答える