2016-08-20 1 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()을 사용하십시오.

내 예는 get() 방법은 XML을 문자열을 반환한다고 가정 :

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로 변경해야합니다. 그래도 https가 없어도 이미지를 사용할 수 있어야합니다.

+0

그것은 일했다! 감사!! –

+0

@RodrigoCaetano - 문제가 해결 되었다면 답장으로 표시하십시오. –