O
ohrflieger
Guest
Abend,
mein Script sollte eigentlich eine XML-Datei mit einer Liste von MP3-Dateien + Titeln generieren. Leider gibt es seltsame Probleme mit Umlauten. Die Titel werden aus den ID3-Tags der MP3-Datei ausgelesen, und wenn sich dort ein Umlaut befindet, wird ein Alternativer Titel angezeigt.
Verständlicher wird es am Script:
Teilweise werden dort willkürlich Alternativtitel angezeigt, wo gar keine Umlaute vorhanden sind (die Namen der MP3s sind gleichzeitig die ID3-Titel).
Wo liegt das Problem?
Wenn jemand einen besseren Lösungsvorschlag hat, gerne raus damit :)
EDIT: getID3v2Tags() ermittelt nur die MP3-Tags und hat sonst nichts mit dem Script zu tun.
mein Script sollte eigentlich eine XML-Datei mit einer Liste von MP3-Dateien + Titeln generieren. Leider gibt es seltsame Probleme mit Umlauten. Die Titel werden aus den ID3-Tags der MP3-Datei ausgelesen, und wenn sich dort ein Umlaut befindet, wird ein Alternativer Titel angezeigt.
Verständlicher wird es am Script:
PHP:
function checkUml($zeile) {
$zeile = str_replace("ü","ü",$zeile);
$zeile = str_replace("Ü","Ü",$zeile);
$zeile = str_replace("ä","ä",$zeile);
$zeile = str_replace("Ä","Ä",$zeile);
$zeile = str_replace("ö","ö",$zeile);
$zeile = str_replace("Ö","Ö",$zeile);
$zeile = str_replace("ß","ß",$zeile);
return $zeile;
}
function checkUml2($zeile) {
$error = true;
if(strpos($zeile,"ü")) $error = false;
if(strpos($zeile,"Ü")) $error = false;
if(strpos($zeile,"ä")) $error = false;
if(strpos($zeile,"Ä")) $error = false;
if(strpos($zeile,"ö")) $error = false;
if(strpos($zeile,"Ö")) $error = false;
if(strpos($zeile,"ß")) $error = false;
return $error;
}
$streamverz = 'files/downloads/'.$actexp[2].'/stream/';
if(is_dir($streamverz)) {
$verz = opendir($streamverz);
while($file = readdir($verz)) {
if(substr(strrev($file),0,4) == '3pm.') {
$tracks[] = $file;
}
}
sort($tracks);
$nr = 1;
foreach($tracks as $play) {
$tags = getID3v2Tags($streamverz.$play);
if($tags['TIT2'] != '') {
if(checkUml2(trim($tags['TIT2']))) $titel = checkUml(trim($tags['TIT2']));
else $titel = $actexp[2].' Track '.$nr;
} else $titel = $actexp[2].' Track '.$nr;
echo '<item name="'.$titel.'" filename="'.$actexp[2].'/stream/'.$play.'" />';
$nr++;
unset($tags);
}
} else {
echo '<item name="Fehler2" filename="" />';
}
Teilweise werden dort willkürlich Alternativtitel angezeigt, wo gar keine Umlaute vorhanden sind (die Namen der MP3s sind gleichzeitig die ID3-Titel).
Wo liegt das Problem?
Wenn jemand einen besseren Lösungsvorschlag hat, gerne raus damit :)
EDIT: getID3v2Tags() ermittelt nur die MP3-Tags und hat sonst nichts mit dem Script zu tun.
Zuletzt bearbeitet von einem Moderator: