Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 5 von 5
  1. #1
    Zaungast
    Registriert seit
    03.10.2011
    Beiträge
    21

    Standard Nur Buchstaben und Zahlen im String

    Hallo,
    ich möchte aus einem String alle Zeichen entfernen, die keine Buchstaben, Zahlen oder ein Bindestrich sind.
    Dazu habe ich folgenden Code:
    PHP-Code:
    $string preg_replace("/[^0-9A-Za-zÄäÖöÜüß-]/"""$string); 
    Nun bleiben aber solche exotischen Zeichen wie "„" im String. Dabei ist es doch eine Whitelist, die NUR die genannten Zeichen zulässt ..

    Kann sich das jemand erklären?

    Vielen Dank schonmal!

    Johannes

  2. #2

    Standard

    [^\x30-\x39|\x41-\x5a|\x61-\x7a]

    Gib die Zeichenbereiche direkt an. Im obigen Beispiel fehlen noch der Bindestrich und die Umlaute
    Christian

  3. #3
    Zaungast
    Registriert seit
    03.10.2011
    Beiträge
    21

    Standard

    Vielen Dank erstmal! Was genau meinst du mit "Zeichenbereichen"? Wo bekomme ich diese her?

  4. #4

    Standard

    \x30-\x39 -> Ziffern
    \x41-\x5a -> Großbuchstaben
    \x61-\x7a -> Kleinbuchstaben

    Wo bekomme ich diese her?
    Aus jeder ASCII Tabelle
    Christian

  5. #5
    Forenheld
    Registriert seit
    26.02.2003
    Ort
    Sachsen-Anhalt
    Beiträge
    5.130

    Standard

    Hallo,
    Zitat Zitat von herlos Beitrag anzeigen
    ...Nun bleiben aber solche exotischen Zeichen wie "„" im String. Dabei ist es doch eine Whitelist, die NUR die genannten Zeichen zulässt ..

    Kann sich das jemand erklären?
    Nein, ist bei meinem Test auch nicht so gewesen. Auf alle Fälle solltest du das letzte - maskieren, da es sonst als Bereichstrenner angesehen werden kann. (Ist ja ein Bestandteil der Syntax)

    PHP-Code:
    echo preg_replace("/[^0-9A-Za-zÄäÖöÜüß\-]/"""'la-ber„„'); 
    liefert bei mir:
    Code:
    la-berbdquo
    Ist denn dein "„" tatsächlich ein solches oder ist es im String als HTML-Entitie geschrieben („) und wird nur bei der Ausgabe zu einem Solchen? Siehe mein Beispiel: wenn du den String "la-ber„„" mit echo ausgibst, dann steht da "la-ber„„", aber nur das Erste der „ wird ersetzt!

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

 

 

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •