String (UTF-8) auf einzelne Zeichen prüfen

  • Hallo,

    ich schreibe gerade ein PHP-Skript das ein HTML-Formular auswertet. Um Fehler zu vermeiden müssen einige Strings auf deren Inhalt geprüft werden. Beispielsweise darf einer der Strings nur kleine Buchstaben enthalten, ein anderer keine Sonderzeichen etc.

    Folgende Funktion habe ich da z.B.:


    Funktioniert auch alles. Allerdings frage ich mich, ob die von mir verwendete Funktion ord(); hier angebracht ist?

    ord(); ist ja ursprünglich und auch laut PHP-Handbuch für ASCII-Zeichen gedacht. Solange die Funktion mit normalen Zeichen (32-127) zu tun hat sind die Codierungen von ASCII und UTF-8 ja identisch. Doch wie sieht es mit speziellen Zeichen, wie z.B. dem Eurozeichen aus? Könnte es da Probleme geben? Gibt es eventuell sogar eine ord()-Alternative für UTF-8?

  • also für kleine buchstaben nimm einfach:

    Code
    $text = strtolower($text);


    Und was sind für dich alles Sonderzeichen? €? -? _? +?
    vll hift dir die Funktion:

    Code
    $text = htmlentities($text);

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Zitat von ::RMB::

    htmlentities() produziert selber Sonderzeichen ;) (&;)


    Ja deswegen fragte ich ja was für ihn alles Sonderzeichen sind.
    Hab schon viele "eigenartige" Definitionen von Sonderzeichen gehört^^

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Danke für die Anregungen.

    Bin nun allerdings zu dem Schluss gekommen, dass die PHP Funktion ord() ja nunmal den ASCII-Code liefert, egal ob der eingegebene String nun ASCII oder UTF-8 war. Und solange ich dann in der Vergleichsfunktion mit ASCII-Werten vergleiche kann nichts schief gehen.