Archiv verlassen und diese Seite im Standarddesign anzeigen : Umlaute ersetzen, damit Dateiname gültig ist...
israelsson 21-11-2004, 06:17 hey!
ich hab schon in Forum gesucht, aber nichts gefunden was mir wirklich weiterhilft!
Ich möchte durch ein Formular ein Steckbriefmuster erstellen, wobei der Steckbrief anschließens als HTML datei gespreichert werden soll.
Der Dateiname setzt sich aus den ersten beiden Buchstaben des Vornamens und dem kompletten Nachnamen zusammen:
$vorname_str = strtolower(substr($vorname, 0, 2));
$nachname_str = strtolower($nachname);
$dateiname = "$vorname_str$nachname_str.html";
Das funktioniert auch alles, aber wenn in dem Nachnamen nun ein ä ü oder ö (Müller) oder bei falscher eingabe vielleicht auch ein ß eingegeben wird, ist der Dateiname nicht mehr gültig!
Wie kann ich den Vornamen und Nachnamen auf Umlaute überprüfen, und diese, wenn sie gefunden wurden, ersetzen durch ae, ue, oe und ss...
Danke für jede Hilfe im Voraus!
MFG Israel's Son
http://www.php.net/manual/de/function.substr-replace.php
http://us2.php.net/manual/de/function.preg-replace.php
israelsson 21-11-2004, 12:35 Danke!
// Umlaute entfernen
$umlaute = Array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/");
$replace = Array("ae","oe","ue","Ae","Oe","Ue","ss");
$vorname_neu = preg_replace($umlaute, $replace, $vorname);
$nachname_neu = preg_replace($umlaute, $replace, $nachname);
// Dateiname wird erstellt
$vorname_str = strtolower(substr($vorname_neu, 0, 2));
$nachname_str = strtolower($nachname_neu);
$dateiname = "$vorname_str$nachname_str$dateiendung";
Jetzt funktioniert es!
kannte preg_replace() vorher garnich...
Besten Danke!
MFG Israel's Son
penizillin 21-11-2004, 17:10 weiß nicht, ob's sinnvoll ist, aber man kann den modifier /i benutzen, da du die strings doch eh alle strlower() setzst.
*rauskram*
mal ne Frage: Ist es hier sinnvoller preg_replace() oder str_replace() zu benutzen um die Umlaute zu ersetzen?
onemorenerd 03-06-2006, 12:56 str_replace(): "Falls Sie keine ausgefallenen String-Ersetzungen brauchen, sollten Sie immer dieser Funktion den Vorzug vor ereg_replace() oder preg_replace() geben. "
Leider funktioniert die str_replace bei mir nicht richtig.
Sonderzeichen wie ä usw. ersetzt er, ß aber nicht!!!
So sieht die Befehlszeile aus:
$row2['products_description'] = str_replace("/ß/","ss",$row2['products_description']);
Habe ich hier jetzt einen ganz blöder Ferhler drin? Wie gesagt andere Zeichen ersetzt er.
Woran könnte es noch liegen?
Vielen Dank.
Original geschrieben von d.pioch
Leider funktioniert die str_replace bei mir nicht richtig.
Sonderzeichen wie ä usw. ersetzt er, ß aber nicht!!!
So sieht die Befehlszeile aus:
$row2['products_description'] = str_replace("/ß/","ss",$row2['products_description']);
Habe ich hier jetzt einen ganz blöder Ferhler drin? Wie gesagt andere Zeichen ersetzt er.
Woran könnte es noch liegen?
Vielen Dank.
probier mal
$row2['products_description'] = str_replace("ß","ss",$row2['products_description']);
habe ich zuerst so gehabt, funktioniert aber auch nicht.
onemorenerd 07-06-2006, 11:46 Ja genau, dein PHP ist kaputt. :rolleyes:
So weit ich weiß läuft Php bei usnerem Provider auf der neusten Version...
mrhappiness 07-06-2006, 11:57 <?php
$alt = 'Maße';
$neu = str_replace('ß', 'ss', $alt);
echo 'alt: '.$alt.'<br />';
echo 'neu: '.$neu;
?>Ausgabe?
Ausgabe:
alt: Maße
neu: Masse
scheint also so zu funktionieren...
mrhappiness 07-06-2006, 12:38 Und was folgern wir draus?
Wir folgern daraus, dass da also etwas im Quelltext nicht stimmt.
Kann da aber keinen Fehler entdecken!
Wäre für Hilfe echt dankbar.
onemorenerd 07-06-2006, 13:32 Na dann zeig doch mal her!
reicht diese Zeile (wie oben gepostet) nicht?
$row2['products_description'] = str_replace('ß','ss',$row2['products_description']);
wie gesagt mit anderen Zeichen und mit Umlauten funktioniert die ganze Geschichte!
$row2['products_description'] = str_replace("ä","ae",$row2['products_description']);
$row2['products_description'] = str_replace("function NewWindow","",$row2['products_description']);
woran kann es denn liegen?
Braucht Ihr noch mehr Quelltext?
onemorenerd 07-06-2006, 13:54 Dass auch bei dir die Funktion str_replace() das tut, was man von ihr erwartet, hast du schon mit dem Schnipsel von mrhappiness überprüft. Insofern helfen die drei Zeilen Code nicht weiter. :(
Die Datei stammt aus OS-Commerce Froogle Exporter.
Sie ist knapp 2000 Zeilen lang.
Denke nicht, dass ich hier die ganze Datei posten soll oder?
Kann man den Fehler nicht irgendwie eingrenzen?
Danke im Voraus
onemorenerd 07-06-2006, 14:15 Ja klar kannst DU den Fehler eingrenzen. Aber irgendwie habe ich das Gefühl, dass du überhaupt nichts in dieser Richtung unternimmst.
Du weißt, dass eine einzige Anweisung - die Ersetzung aller ß - nicht funktioniert. Aber woher? Hast du Testausgaben gemacht?
echo $var
$var = str_replcae('ß', 'ss', $var);
echo $var;
Ggf. falsche/nicht übereinstimmende Zeichenkodierungen - so dass ein 'ß' in deinen Daten nicht gleich einem 'ß' in deinem Script ist ...?
Natürlich unternehme ich etwas in dieser Richtung!
Ich mache ständig Testausgaben der kompletten Froggle Datei. Dieser Froogle Exporter exportiert alle Artikel des Online Shops in eine Textdatei.
Ich ändere kleinere Dinge wie Anführungszeichen, Hochkomma, habe hier in dem Thread gesehen eventuell mit /ß/. Funktioniert aber auch nicht. Habe bereits (ob Sinnvoll oder nicht) es mit ß oder mit
ß probiert.
Bin aber mit meinem Latein am Ende.
Ggf. falsche/nicht übereinstimmende Zeichenkodierungen - so dass ein 'ß' in deinen Daten nicht gleich einem 'ß' in deinem Script ist ...?
Wie kann ich das denn nachvollziehen?
hallo,
vielleicht kommt ja noch jemand mit der gleichen Frage über diesen Thread:
mir hat folgender Eintrag geholfen:
$vCard = htmlentities($vCard,ENT_COMPAT,'UTF-8');
$vCard = html_entity_decode($vCard,ENT_COMPAT,'ISO-8859-1');
lg
Paul
tontechniker 26-05-2008, 21:37 $vCard = htmlentities($vCard,ENT_COMPAT,'UTF-8');
$vCard = html_entity_decode($vCard,ENT_COMPAT,'ISO-8859-1'); == utf8_decode ( $vCard );
|
-
- |