Сценарий Shoutcast не работает с именами, имеющими апостроф - PullRequest
0 голосов
/ 02 ноября 2018

Пожалуйста, помогите мне, я не знаю, что делать. Пробовал urlencode но не работает UTF-8 не работает. Мне нужно, чтобы скрипт мог прочитать апостроф для отображаемого изображения, но ничего не поделать. Я не программист, и теперь мне нужна ваша помощь для решения этой проблемы.

<?php
$cover_d = 'http://metalrockpopradio.caramania.com/blackblack.gif';  
$sc_url_ip = "69.175.13.131"; 
$sc_url_port = "8050"; 

function getNowPlaying($sc_url_ip,$sc_url_port) {

  $open = fsockopen($sc_url_ip,$sc_url_port,$errno,$errstr,'.5'); 
  if ($open) { 
    fputs($open,"GET /7.html HTTP/1.1\nUser-Agent:Mozilla\n\n"); 
    stream_set_timeout($open,'1');
    $read = fread($open,200);
    $text = explode(",",$read);
    if($text[6] == '' || $text[6] == '</body></html>') { 
      $msg = ' live stream  '; 
    } else { 
      $msg = $text[6]; 
    }
    $text = $msg; 
  } else {  
    return false; 
  } 
  fclose($open);

  return $text; 
}

$current_song = getNowPlaying($sc_url_ip,$sc_url_port);
$current_song = iconv('ISO-8859-1', 'UTF-8', $current_song);
$singinfo = explode(" - ",$current_song);

$artist = urlencode($singinfo[0]);
$titel = urlencode(strip_tags($singinfo[1]));

$imgurl = @file_get_contents("http://api.depubliekeomroep.nl /anp/albumart.php?artiest=".$artist."&titel=".$titel."&size=extralarge");

if ($imgurl != "") {
  print "<img src=\"" . $imgurl . "\">";
} else { 
  print "<img src=\"" . $cover_d . "\">";
}
?>

1 Ответ

0 голосов
/ 02 ноября 2018

Мы говорим об ASCII 39, да? Я имею в виду, что это даже работает ...

<?php

$artist = "Tom Petty";
$title = "I won't back down";
$uri = "http://api.depubliekeomroep.nl/anp/albumart.php?artiest={$artist}&titel={$title}&size=extralarge";

var_dump(file_get_contents($uri));

https://lastfm -img2.akamaized.net / я / и / 300x300 / 05600d9c77a9288add89fac53d3482e7.png (Длина = 82)

Может, привести пример реальной строки, которая доставляет вам неприятности?

Хотя вышесказанное работает для меня, оно может зависеть от базовой оболочки.

Лучшая практика будет:

$title = urlencode("I won't back down");
...