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 before you start to write code!
    2. Discuss and review it together with experts!
    3. Choose good tools (-> Adventure PHP Framework (APF))!
    4. Write clean and reusable 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 before you start to write code!
        2. Discuss and review it together with experts!
        3. Choose good tools (-> Adventure PHP Framework (APF))!
        4. Write clean and reusable 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: “Performing Push Backups – Part 1: rdiff-backup

          Kommentar


          • #6
            ok danke hat funktioniert ...

            Kommentar

            Lädt...
            X