URL: https://www.overclockers.at/coding-stuff/php_regex-problem_211689/page_1 - zur Vollversion wechseln!
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" />
das funktioniert. Nur a-Z, 0-1 und -, _ zugelassenCode: PHPecho $_POST['newstitle']."<br />"; $allowed = "/[^a-z0-9\\-\\_]/i"; echo "<br />".preg_replace($allowed,"",$_POST['newstitle'])."<br />";
das funktioniert schon nicht mehr.Code: PHP$replacethis = array('Ä', 'Ö', 'Ü', 'ä', 'ö', 'ü', 'ß', ' '); $bythat = array('Ae', 'Oe', 'Ue', 'ae', 'oe', 'ue', 'sz', '_'); echo $foldertitle = str_replace($replacethis, $bythat, $_POST['newstitle']);
klingt vielleicht komisch, aber - ist das sourcefile auch in utf-8 abgespeichert?
wo könnte das noch gesetzt werden außer beim meta?
Lt Firefox page info: UTF-8
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
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.
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
ganz am Anfang hat nix gebracht.Code: PHP<?php header('Content-Type: text/html; charset=utf-8'); ?>
Zitat von fatmike182Der Fehler war also scheinbar wirklich nur beim Abspeichern. Wie hätt ich das schneller lösen können?
Zitat von COLOSSUSWieso 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
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025