php RegEx-Problem?

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_regex-problem_211689/page_1 - zur Vollversion wechseln!


fatmike182 schrieb am 05.11.2009 um 18:20

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 schrieb am 05.11.2009 um 21:17

klingt vielleicht komisch, aber - ist das sourcefile auch in utf-8 abgespeichert?


fatmike182 schrieb am 05.11.2009 um 21:23

wo könnte das noch gesetzt werden außer beim meta?
Lt Firefox page info: UTF-8


COLOSSUS schrieb am 05.11.2009 um 21:25

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 schrieb am 05.11.2009 um 22:21

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 schrieb am 05.11.2009 um 23:44

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 schrieb am 05.11.2009 um 23:45

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.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025