2016-08-20 6 views
-1

XMLファイルから画像URLを取得する必要がありますが、このURLはhttpsを使用するため、サーバーにエラーが発生しました。 httpsリンクを読んで、httpにリンクするにはどうすればいいですか?HTTPSをXMLのHTTPSに置き換えます。

function api_lastfm($artist, $api_key) { 
     $data = xml2array(get("http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=" . urlencode($artist) . "&api_key={$api_key}", false, false, false, 6)); 
     return (isset($data[ 'artist' ][ 'image' ][ 4 ]) && !empty($data[ 'artist' ][ 'image' ][ 4 ])) ? $data[ 'artist' ][ 'image' ][ 4 ] : $data[ 'artist' ][ 'image' ][ 3 ]; 
    } 

enter image description here

おかげで...私はプログラミングを理解していない、私を助けてください!

+0

XML応答(おそらく単なる文字列)を変換する前に、PHPの[str_replace](http://php.net/manual/en/function.str-replace.php)関数を使用してください。 '$ string = str_replace( 'https:// lastfm-img2'、 'http:// lastfm-img2'、$ string)'のようになります。しかし、それはhttpsのURLであるため、問題は確実ですか? –

+0

私のサーバーのログに「CURL Request」というエラーメッセージが表示されます。https://lastfm-img2.akamaized.net/i/u/549d31e77f614f269ca04a6bc156bda2.png「失敗!LOG:SSL証明書の問題:ローカル発行者証明書を取得できません」。ですから、httpsをhttpに置き換えたいと思います。私のコードはどうですか?どこにこのstr_replaceコマンドを置くのですか?ありがとう。 –

+0

私はそれをどこに追加するかに関する答えを書いた。あなたの 'get()'メソッドが返すものが本当にわからないので、推測です。 –

答えて

0

私のコメントに言及したように、これにはstr_replace()を使用してください。

function api_lastfm($artist, $api_key) 
{ 
    $data = get("http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist=" . urlencode($artist) . "&api_key={$api_key}", false, false, false, 6); 

    // Replace all image urls using https to http 
    $data = str_replace('https://lastfm-img2', 'http://lastfm-img2', $data); 

    $data = xml2array($data); 
    return (isset($data[ 'artist' ][ 'image' ][ 4 ]) && !empty($data[ 'artist' ][ 'image' ][ 4 ])) ? $data[ 'artist' ][ 'image' ][ 4 ] : $data[ 'artist' ][ 'image' ][ 3 ]; 
} 

これは、すべての画像のURLのHTTPSからHTTPに変更する必要があります。

私の例では、get()メソッドは、XMLと文字列を返すことを想定しています。しかし、画像がhttpsなしでも利用可能でなければならないということです。

+0

それは働いた!ありがとう!! –

+0

@RodrigoCaetano - これで問題が解決した場合は、回答としてマークしてください。 –

関連する問題