2016-08-20 3 views
-1

Мне нужно получить URL-адрес изображения из XML-файла, но на моем сервере появились некоторые ошибки, потому что этот url использует https. Как я могу прочитать ссылку https и передать ее http? Пожалуйста, помогите мне, я не понимаю, программирование ...Заменить HTTPS на HTTPS XML

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» https://lastfm-img2.akamaized.net/i/u/549d31e77f614f269ca04a6bc156bda2.png «failed! 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 - Если это решило вашу проблему, отметьте ее как ответ. –

Смежные вопросы