Ankündigung

Einklappen
Keine Ankündigung bisher.

Reguläre Ausdrücke

Einklappen

Neue Werbung 2019

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

  • Reguläre Ausdrücke

    Guten Abend,
    Hab ein Problem mit regulären ausfrücken es soll der text zwischen:
    <!-- BEGIN $place -->
    TEXT
    <!-- END $place -->
    ausgelesen werden in der datei steht z.b:

    <!-- BEGIN Test -->
    Hallo Welt!
    <!-- END Test -->

    <!-- BEGIN Test2 -->
    Hallo, Test Welt!
    <!-- END Test2 -->

    jetzt gebe ich an dass $place Test sein soll wie mache ich das ?

    Hab folgdendes:
    PHP-Code:
    preg_match("<!--[:space:]BEGIN[:space:]".$place."[:space:]-->.<!--[:space:]END[:space:]".$place."[:space:]-->"$str$matches); 
    Was ist der Fehler ?

    Vielen Dank
    Unbass

  • #2
    -> preg_match_all()
    -> der Text zwischen deinen Kommentaren muss mit ".*" adressiert werden
    -> da der Text Zeilenumbrüche beinhaltet brauchst du entsprechende Modifier
    Viele Grüße,
    Dr.E.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1. Think about software design [B]before[/B] you start to write code!
    2. Discuss and review it together with [B]experts[/B]!
    3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
    4. Write [I][B]clean and reusable[/B][/I] software only!
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Kommentar


    • #3
      Ok danke habe es nun abgeändert nun habe ich noch ne frage welchen Modifiert brauche ich ?

      Habe nun:
      PHP-Code:
      preg_match_all("<!--[:space:]BEGIN[:space:]".$place."[:space:]-->(.*)<!--[:space:]END[:space:]".$place."[:space:]-->"$str$matches); 
      Mit der Klammer um (.*) kommt:
      Code:
      Warning:
      Code:
        preg_match_all() [function.preg-match-all]: Unknown modifier '.' in
      ohne:
      Code:
      Warning:  preg_match_all() [function.preg-match-all]: Unknown modifier '.' in
      Kannst du mir villeicht posten wie genu du des meintest ?

      Kommentar


      • #4
        [QUOTE]Kannst du mir villeicht posten wie genu du des meintest ?[/QUOTE
        Du brauchst noch einen Delimiter um deinen Ausdruck. So sollte es funktionieren:

        PHP-Code:
        preg_match_all('/<!--[:space:]BEGIN[:space:]".$place."[:space:]-->(.*)<!--[:space:]END[:space:]".$place."[:space:]-->/im',$str,$matches); 
        Viele Grüße,
        Dr.E.

        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        1. Think about software design [B]before[/B] you start to write code!
        2. Discuss and review it together with [B]experts[/B]!
        3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
        4. Write [I][B]clean and reusable[/B][/I] software only!
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        Kommentar


        • #5
          Und da verließen sie ihn…
          Doc, was ist mit dir los? Du schwächelst!

          1. POSIX-Ausdrücke sind nur innerhalb von Zeichenklassen erlaubt
          2. Die Variable wird er innerhalb von Singlequotes wohl eher nicht parsen
          3. Die Modifier sind auch suboptimal

          PHP-Code:
          preg_match_all('/<!--[[:space:]]BEGIN[[:space:]]'.$place.'[[:space:]]-->(.*)<!--[[:space:]]END[[:space:]]'.$place.'[[:space:]]-->/Uis'$str$matches); 
          Die Zeichen <, > und ! kann man der Sauberkeit halber noch maskieren, funktioniert aber auch so.
          Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

          Kommentar


          • #6
            ok danke hat funktioniert ...

            Kommentar

            Lädt...
            X