Anzeige:
Ergebnis 1 bis 6 von 6

Thema: regexp

  1. #1
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881

    regexp

    Hallo allerseits,ich bin gerade dabei an einer sicherlich ganz einfachen sache zu scheitern...: Ich versuche in einem string alle zeichen zu entfernen, die nicht diesem Ausdurck entsprechen:
    Code:
    /^[\w|\s|\d|\.|\,]+$/
    irgendwie stell ich mich zu blöd an Für nen tipp wäre ich dankbar.

    cu el
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  2. #2
    Registrierter Benutzer
    Registriert seit
    05.06.2003
    Beiträge
    118
    Na dann:

    s/[^a-zA-Z0-9\r\n\t.,]//g

    Innerhalb einer Aufzählung (die du mittels der eckigen Klammern eröffnest), verlieren alle Abkürzungen (z.B. \w) ihre Sonderbedeutung. Deshalb also für

    \w a-zA-Z0-9 (\w beinhaltet "word characters", darunter fallen auch die Zahlen)
    \r\n\t für dein \s (Whitespace-Charaktere)
    . für deinen Punkt (verliert auch seine Spezialeigenschaften)
    , dasselbe

    Ansonsten hast du noch darauf bestanden, daß dein gesamter String aus diesen Zeichen besteht, wo du doch einfach nur alle ersetzen wolltest

    Je nach Regeln könnte dies ggf. ein wenig abweichen, mein Wissen stammt nicht direkt aus PHP. Hoffe, daß die da nicht viel anders implementieren als Perl.

    TME

  3. #3
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Das Zirkumflex muß innerhalb der Klammer Stehen wenn du negieren möchtest. Die oder Anweisungen kannst du dir Sparen weil [] irgendeines dieser Zeichen bedeutet. Wenn du ein ODER also Pipe Zeichen verwendest würde der Regexp bei dem ersten Treffer beenden, es wäre zudem ein Gierige Regexp weil jeder ODER innerhalb eines Ausdrucks einen neuen Stack aufmacht
    PHP-Code:
    preg_replace"/[^\w\.\, ]+/"""$str ); 
    Übersetzt :
    Suche alle nicht Alnum,Leerzeichen,Punkt, Komma und eines dieser nicht vorhandenen Zeichen muß mindestens einmal kann aber mehrfach vorkommen.
    Wenn es ein UTF-8 String ist, vergiß bitte nicht das u Flag zu setzen.

    Info:
    \s ist bei PHP je nach Kodierung Problematisch, du solltest hier einfach ein Leerzeichen verwenden.
    Geändert von undefined (03-03-2007 um 06:45 Uhr) Grund: Rechtschreibung
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Würde ein "str_replace" den Zweg nicht auch erfüllen?
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  5. #5
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von Turbohummel Beitrag anzeigen
    Würde ein "str_replace" den Zweg nicht auch erfüllen?
    Ne, das klappt nicht weil str_replace keine Regulären Ausdrücke versteht.
    Anders ausgedrückt: Du müßtest sehr oft str_replace() nacheinander benutzen um den selben Effekt zu erzielen.

    Nehmen wir einmal an Du möchtest die Buchstaben a b c D e ersetzen.
    Dies bedeutet 5x str_replace() benutzen.

    Würdest Du jetzt die passende Regex Funktion anwenden entspricht dies nur einem Ausdruck.
    Bei 5 verschiedenen Zeichen mag das noch mit str_replace() zu lösen sein,
    aber was machst Du wenn 300 verschiedene Zeichen ersetzt werden müssen?
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  6. #6
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    Danke euch allen, ich komme leider erst jetzt dazu mich des problems wieder anzunehmen...

    gruss el
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

Lesezeichen

Berechtigungen

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