Простой XML из строки - чего не хватает? - PullRequest
0 голосов
/ 21 августа 2011

Я схожу с ума здесь, я почти уверен, что, по крайней мере, на правильном пути.

Я просто пытаюсь разобрать ответ, который я получаю от API, который возвращаетсяв XML.Мне действительно нужно только распечатать индекс "Лирика".

В любом случае, вот код:

<?php
    $artist = $_GET['artist'];
    $song = $_GET['song'];

    if(isset($_GET['artist']) && isset($_GET['song']))
    {
        $result = get_lyrics($artist, $song);
    } else {
        $result = "";
    }

    function get_lyrics($artist, $song)
    {
        $postURL = "http://api.chartlyrics.com/apiv1.asmx/SearchLyricDirect?artist=".urlencode($artist)."&song=".urlencode($song);
        echo $postURL;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $postURL);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        $result = curl_exec($ch);
        curl_close($ch);

        return $result;
    }

?>


<html>
    <head><title>Lyric Search</title></head>

    <form action="<?=$_SERVER['PHP_SELF']?>" method="get">
        <p>Artist<input type="input" name="artist" /></p>
        <p>Song<input type="input" name="song" /></p>
        <input type="submit" value="submit" />
    </form>

    <div id="results">
        <?php

            $xml = simplexml_load_string($result);

            foreach($xml->GetLyricResult as $lyric)
            {
                echo $lyric->Lyric;
            }
        ?>
    </div>
</html>

А вот и XML ....

http://api.chartlyrics.com/apiv1.asmx/SearchLyricDirect?artist=lady+gaga&song=poker+face

Ответы [ 2 ]

1 голос
/ 21 августа 2011

Вам не нужно использовать foreach, потому что есть только одна лирика.

вам просто нужно:

<div id="results">
<?php
$xml = simplexml_load_string($result);
echo $xml->Lyric[0];
?>
</div>
1 голос
/ 21 августа 2011

Попробуйте:

<code><html>
    <head><title>Lyric Search</title></head>

    <form action="<?=$_SERVER['PHP_SELF']?>" method="get">
        <p>Artist<input type="input" name="artist" /></p>
        <p>Song<input type="input" name="song" /></p>
        <input type="submit" value="submit" />
    </form>

    <div id="results">
<?php
    if(isset($_GET['artist']) && isset($_GET['song'])){
        $result = get_lyrics($_GET['artist'],$_GET['song']);
        $xml = simplexml_load_string($result);

        echo "<pre>";
        //print_r($xml);
        echo $xml->Lyric;
        echo "
"; } функция get_lyrics ($ artist, $ song) { $ postURL = "http://api.chartlyrics.com/apiv1.asmx/SearchLyricDirect?artist=".urlencode($artist)."&song=".urlencode($song); echo $ postURL; $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ postURL); curl_setopt ($ ch, CURLOPT_HEADER, 0); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); $ result = curl_exec ($ ch); curl_close ($ ч); вернуть $ результат; } ?>
...