Willkommen in der Webstatt Zum Webstatt Blog und Stories
Sven Sven am 05.04.06 16:49

Huhe,
bei mir Streikt grad str_replace beim Umwandeln von Umlauten :

$bild2 = str_replace('ä', 'ae', $bild);

Problem : Der Umlaut wird nicht ersetzt. Weiter unten lasse ich noch ein Leerzeichen mit _ ersetzen und das klappt. Jemand ne Idee? Ich poste zur Sicherheit gleich noch den kompletten Code.

<?php
$verzeichnis = dir('events');

while($bild = $verzeichnis->read()) {
if(eregi('.jpg$', $bild) OR eregi('.jpeg$', $bild)) {
echo "Das Bild <b>$bild</b> wurde umbenannt in : ";

$bild2 = str_replace('ä', 'ae', $bild);
$bild2 = str_replace('ü', 'ue', $bild);
$bild2 = str_replace('ö', 'oe', $bild);
$bild2 = str_replace('Ä', 'Ae', $bild);
$bild2 = str_replace('Ü', 'Ue', $bild);
$bild2 = str_replace('Ö', 'Oe', $bild);
$bild2 = str_replace(' ', '_', $bild);

echo "<b>$bild2</b><br />\n";

rename('events/' . $bild, 'events/' . $bild2);
}
}
?>

netcup.de Warum gibt es hier Werbung?
Franky Franky am 05.04.06 17:07

zeile 8 bis 14:
- - 3. argument:
- - - $bild2 statt $bild ;)

Sven Sven am 05.04.06 17:12

Weiß nicht ob du das so gemeint hast, aber so gehts :
<?php
$verzeichnis = dir('events');

while($bild = $verzeichnis->read()) {
if(eregi('.jpg$', $bild) OR eregi('.jpeg$', $bild)) {
echo "Das Bild <b>$bild</b> wurde umbenannt in : ";

$bild2 = $bild;
$bild2 = str_replace('ä', 'ae', $bild2);
$bild2 = str_replace('ü', 'ue', $bild2);
$bild2 = str_replace('ö', 'oe', $bild2);
$bild2 = str_replace('Ä', 'Ae', $bild2);
$bild2 = str_replace('Ü', 'Ue', $bild2);
$bild2 = str_replace('Ö', 'Oe', $bild2);
$bild2 = str_replace(' ', '_', $bild2);

echo "<b>$bild2</b><br />\n";

rename('events/' . $bild, 'events/' . $bild2);
}
}
?>

der_nic der_nic am 05.04.06 17:33

ist ja klar bei dem Code:
$bild2 = str_replace('ä', 'ae', $bild); // jetzt wird $bild2 der text von $bild mit ä's ersetzt
$bild2 = str_replace('ü', 'ue', $bild); // jetzt wird das obrige gelöscht und neu das ü ersetzt
$bild2 = str_replace('ö', 'oe', $bild2); // jetzt wird der code von oben übernommen


überschreibst du ja jedes mal $bild2 wider von neuem, so das am Schluss nur das Leerzeichen mit _ ersetzt wird weil es der letzte Befehl ist.
Analog würde es auch gehen wenn du überall $bild genommen hättest.

Sven Sven am 05.04.06 17:58

Ich habs ja jetzt auch schon gemerkt :P

Johannes am 05.04.06 18:45

Um jetzt noch an unnützem Code zu sparen würde ich dir empfehlen, dich über die Möglichkeit von str_replace zu informieren, auch Arrays zu durchlaufen
http://de.php.net/manual/de/function.str-replace.php


$suchen = array( 'ö', 'ä', 'ü' );
$ersetzen = array( 'oe', 'ae', 'ue' );
$bild2 = str_replace( $suchen, $ersetzen, $bild2 );

Sven Sven am 05.04.06 20:22

Merci, ist getan.

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt