"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

php RegEx-Problem?

fatmike182 05.11.2009 - 18:20 1062 6
Posts

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
Hallo,
ich glaub, das Problem liegt leider am charset oder so und nicht am regex, aber trotzdem:
Es soll in ei Input was eingegeben werden & bei submit-Pressen dann ein ordner mit diesem Namen erstellt werden. Sonderzeichen sind dabei daher zu entfernen & Space durch Unterstrich. zu ersetzen (sowie Umlaute, ß durch Ae,Oe,Ue...sz)

es liegt alles in 1 file:
head
Code: PHP
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

if submit-key exists (submit gedrückt)
Code: PHP
echo $_POST['newstitle']."<br />";
$allowed = "/[^a-z0-9\\-\\_]/i";
echo "<br />".preg_replace($allowed,"",$_POST['newstitle'])."<br />";
das funktioniert. Nur a-Z, 0-1 und -, _ zugelassen
Daher möcht ich davor noch Umlaute & ß ersetzen:
Code: PHP
$replacethis = array('Ä', 'Ö', 'Ü', 'ä', 'ö', 'ü', 'ß', ' ');
$bythat = array('Ae', 'Oe', 'Ue', 'ae', 'oe', 'ue', 'sz', '_');
echo $foldertitle = str_replace($replacethis, $bythat, $_POST['newstitle']);
das funktioniert schon nicht mehr.
" " wird durch "_" ersetzt, aber Umlaute,ß nicht.
Wo hab ich was vergessen?

DirtyHarry

aka robobimbo
Avatar
Registered: Apr 2001
Location: outer space
Posts: 464
klingt vielleicht komisch, aber - ist das sourcefile auch in utf-8 abgespeichert?

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
wo könnte das noch gesetzt werden außer beim meta?
Lt Firefox page info: UTF-8

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
Wieso machst du es nicht richtig und schoen, und nutzt die entsprechende Landessprachen-Locale und POSIX Character Classes in den RegEx? Ich nehme mal an, dass sogar PHP das kann :D

Ah, OK - ich sehe grade, dass du die Umlaute ja filtern und ersetzen, nicht erlauben willst. Zu schnell gelesen.

Bei HTTP zaehlt das Charset aus dem HTTP-Header. Dieser <HTML META>-Krempel ist afaik MAY/SHOULD, muss also nicht vom Client ausgewertet werden. Und das Sourcefile der PHP-Anwendung musst da nutauerlich auch in UTF-8 abspeichern, sonst werden deine literale niemals die eingehenden Daten matchen.

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
mah, so ein Dreck.
Ich hab keine Ahnung, wo ich das bei coda einstellen/umstellen kann...

Hab Dreamweaver geöffnet, UTF-8 eingestellt, neues File geöffnet & eingepasted. Resultat: alles funktioniert.

ein
Code: PHP
<?php header('Content-Type: text/html; charset=utf-8'); ?>
ganz am Anfang hat nix gebracht.
Der Fehler war also scheinbar wirklich nur beim Abspeichern. Wie hätt ich das schneller lösen können?

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Zitat von fatmike182
Der Fehler war also scheinbar wirklich nur beim Abspeichern. Wie hätt ich das schneller lösen können?

In dem du deinen Editor besser kennenlernst. Der Texteditor ist das wichtigste Werkzeug eines Entwicklers, da kann man schon ein bisschen Zeit investieren, um sich damit auseinanderzusetzen.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Zitat von COLOSSUS
Wieso machst du es nicht richtig und schoen, und nutzt die entsprechende Landessprachen-Locale und POSIX Character Classes in den RegEx? Ich nehme mal an, dass sogar PHP das kann :D

Also die Unicode-Unterstützung von PHP ist echt denkbar schlecht; ich fürchte also, dass deine Annahme nicht gerechtfertigt ist. In PHP 6 soll das allerdings kommen.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz