2017-08-07 13 views
1

私は[Brackets]ですべてのコンテンツをMy Stringから削除しようとしましたが、mb_strtoupperも使用しました。しかし、それは動作しません。PHP:preg_replaceとmb_strtoupperは一緒に動作しません

私が取得したい:

<artist> <![CDATA[ MALARKEY FT. STEVYN ]]> </artist> <title> <![CDATA[ TO YOU ]]> </title> 

をしかし、私は得る:

ここ
<artist> <![CDATA[ MALARKEY FT. STEVYN ]]> </artist> <title> <![CDATA[ TO YOU [DOMASTIC REMIX] ]]> </title> 

私のコードです:

$Length = 25; 
$rnd = substr(str_shuffle(md5(time())), 0, $Length); 

$songs = []; 

$channels = range(1,6); 

// Download current songs (from 1 to 6) 
foreach ($channels as $sid) { 

    $song = file_get_contents(sprintf('http://31.214.240.175:8000/currentsong?sid=%s', $sid)); 
    list($artist, $title) = explode(' - ', $song, 2); 

    $actualImageUrl = sprintf('http://31.214.240.175:8000/playingart?sid=%s&rnd=%s', $sid, $rnd); 
    $placeholderImageUrl = "http://www.reyfm.de/img/nocover.png"; 
    $imageUrl = @getimagesize($actualImageUrl) ? $actualImageUrl : $placeholderImageUrl; 

    $songs[] = [ 
     'rnd' => $rnd, 
     'sid' => $sid, 
     'image' => $imageUrl, 
     'song' => $song,  

     'artist' => trim($artist), 
     'title' => trim($title), 

     'artist' => preg_replace('~\[.*\]~' , "", $artist), 
     'title' => preg_replace('~\[.*\]~' , "", $title), 

     'artist' => mb_strtoupper($artist), 
     'title' => mb_strtoupper($title), 
    ]; 
} 
unset($song); 

いくつかのアイデアは?

+0

あなたはそれらの "ブラケット"の目的を知っていますか?言い換えれば、CDATAがどのようなものかを知っていますか?通常は、XML文書内でHTMLやその他のもの(XMLと見なせるもの)をエスケープするために使用されます。 https://stackoverflow.com/questions/2784183/what-does-cdata-in-xml-mean – ArtisticPhoenix

+0

ああ、ポイントはあなたが最初の場所でデータを読むためにSimpleXMLのようなものを使って、より良い運を持つかもしれないということですそれは確かにXMLです) – ArtisticPhoenix

答えて

0

'artist''title'のキーを2回上書きしています。

$songs[] = [ 
    'rnd' => $rnd, 
    'sid' => $sid, 
    'image' => $imageUrl, 
    'song' => $song,  

    'artist' => trim($artist), 
    'title' => trim($title), 

    'artist' => preg_replace('~\[.*\]~' , "", $artist), 
    'title' => preg_replace('~\[.*\]~' , "", $title), 

    'artist' => mb_strtoupper($artist), 
    'title' => mb_strtoupper($title), 
]; 

これはほとんど書き込みと同じです:

$songs[0]['artist'] = trim($artist); 
$songs[0]['artist'] = preg_replace('~\[.*\]~' , "", $artist); 
$songs[0]['artist'] = mb_strtoupper($artist); 

あなたが見ることができるように、$songs[0]['artist']の値が最後の値で終了。あなたが欲しいのは、次のようなものです:

$artist = trim($artist); 
$artist = preg_replace('~\[.*\]~' , "", $artist); 
$artist = mb_strtoupper($artist); 

// Similar code for $title 

$songs[] = [ 
    'rnd' => $rnd, 
    'sid' => $sid, 
    'image' => $imageUrl, 
    'song' => $song,  

    'artist' => $artist, 
    'title' => $title, 
]; 
関連する問題