Ankündigung

Einklappen
Keine Ankündigung bisher.

Wortgrenzen in Regulären Ausdrücken

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wortgrenzen in Regulären Ausdrücken

    Hallo Forengemeinde!

    Habe hier eine kleine Auseinandersetzung mit der Wortgrenze. (\b) :wink:

    Bei meinem lokalem IIS auf Windows Server 2003 + PHP 4.3.8 wird die Wortgrenze gefunden und bei meinem online Server Apache 1.3.33 auf Unix + PHP 4.3.11 nicht?! Kann das sein?

    Hier ein link zur Verdeutlichung des Regulärem Ausdrucks:
    http://www.cix88.de/cix_php/demo/cix...20051023165741
    (hier wird die Wortgrenze ebenfalls nicht gefunden)
    hier sollte das Wort "RS" im Wort "fürs" nicht gefunden werden.

    Oder verstehe ich das \b für Wortgrenzen falsch?

    Wie gesagt auf meinem IIS funktionier das alles hervorragend mit dem gleichem Ausdruck:
    Code:
    #\b(RS)\b#iSU
    Da ich aber das Nichterkennen der Klein-/Großschreibung nicht unbedingt abschalten möchte, frage ich euch wie ich das Problem am besten lösen könnte.

    Danke,
    m@x

  • #2
    Re: Wortgrenzen in Regulären Ausdrücken

    Zitat von m@x
    Oder verstehe ich das \b für Wortgrenzen falsch?
    nein, nur der von preg verwendete zeichensatz scheint bei deinem online server ein anderer zu sein (müsste man irgendwo auf ISO 8859-1[de] - oder so ähnlich - ändern)
    ansonsten musst du das ganze eben so schreiben, dass auch umlaute als wortzeichen erkannt werden, z.b. so:

    PHP-Code:
    <?php
    $string 
    "RS ist ein Test der Abkürzung RS fürs Lexikon.";

    $pattern '#(^|[^\wäöüß]+)(RS)($|[^\wäöüß]+)#Ui';
    $replacement '\1<wort>\2</wort>\3';
    $string preg_replace($pattern$replacement$string);
    ?>
    P.S.: geht wahrscheinlich mal wieder schöner

    Kommentar


    • #3
      Na supi!

      Besten Dank für den Denkanstoß!
      Kann ich mit
      PHP-Code:
      <?php

      $loc_de 
      setlocale (LC_ALL'de_DE@euro''de_DE''de''ge');

      ?>
      ganz einfach umstellen.

      Auch Dein Regulärer Ausdruck funktioniert hervorragend, danke!

      Grüße
      m@x


      PS: Der Ausdruck muss ja keinen Schönheitswettbewerb gewinnen. :wink:

      Kommentar


      • #4
        mein ISO-kram gehörte dann wohl eher zu perl ...
        Code:
        setlocale(LC_CTYPE,"de_DE.ISO-8859-1");

        Kommentar


        • #5
          Ob das locale de_DE.ISO-8859-1 oder sonstwas heisst, hängt davon ab, wer das System eingerichtet hat. Und dann gilts für Perl und PHP gleichermassen.
          mod = master of disaster

          Kommentar

          Lädt...
          X