[REGEX] Bereich Editierung like wiki

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

  • [REGEX] Bereich Editierung like wiki

    Hallo,

    ihr kennt es vielleicht aus dem Wiki. Hinter jeder Überschrift gibt es einen bearbeiten Button. Bearbeitet man eine Hauptüberschrift (== TEXT ==) wird der Text bis zur nächsten Hauptüberschrift im Edit Modus angezeigt. Bei kleinereren Überschriften (=== TEXT ===) wird nur der Text bis zur nächsten Überschrift, egal ob klein oder groß, angezeigt.

    Das gleiche möchte ich gerne auch machen.

    Leider funktioniert folgendes Script nicht wie gewünscht.
    PHP-Code:
    $text '== eins == 

    === zwei ===
    anfang = ende = b = c = d = e = f
    === drei ===
    ddd
    === vier ===
    ddd'

    preg_match_all('/(?:|[^=])(===|==)[^=]+\1.*?\1/s', $text, $ary);

    Result ist:
    array(2) {
    [0]=>
    array(2) {
    [0]=>
    string(17) "== eins ==

    =="
    [1]=>
    string(23) "
    === drei ===
    ddd
    ==="
    }

    Problem dabei ist das Ende: \1 Wenn ich hier danach abfrage, ist es beim nächsten preg_match nicht mehr im String enthalten. - auch völlig klar

    Als Ergebnis hätte ich gern ein Array:

    [0] = "== eins ==
    ";
    [1] = "=== zwei ===
    anfang = ende = b = c = d = e = f";
    [2] = "=== drei ===
    ddd";
    [3] = "=== vier ===
    ddd";

    Leider fällt mir nichts anderes ein wie man es ansonsten lösen könnte.

    Jemand eine Idee?

    Nachtrag:
    Mußte das [ PHP ] wieder entfernen da die \ entfernt wurden.
    Zuletzt geändert von Sebastian W; 12.10.2006, 22:11.
    Grüsse,
    Sebastian


    Profil Flex Freelancer
    Twitter twitter.com/flashhilfe
    Web Flash und Flex Community

  • #2
    nicht 100% was du haben willst, aber du muss damit zurrecht kommen

    $pattern = '/([=]{2,3}[^=]++[=]{2,3}.+)/';
    PHP-Code:
    $array=preg_split($pattern$TXT, -1,PREG_SPLIT_DELIM_CAPTURE PREG_SPLIT_NO_EMPTY);
    echo 
    '<pre>'print_r($arraytrue). '</pre>'
    Slava
    bituniverse.com

    Kommentar


    • #3
      Das sieht bereits ganz gut aus.

      Hab jetzt zwar wieder das Problem das ==== Text ==== ebenfalls erkannt wird, aber damit kann ich leben.

      Was ich allerdings nicht verstanden habe ist ++

      $pattern = '/(={2,3}[^=]+={2,3}.+)/';

      Reicht doch, oder?

      Vielen Dank für Deine Hilfe..
      Grüsse,
      Sebastian


      Profil Flex Freelancer
      Twitter twitter.com/flashhilfe
      Web Flash und Flex Community

      Kommentar


      • #4
        Hm, habs mir gerade noch mal angeschaut, leider sind nun auch solche Tags gültig:

        == Text ===

        Was vermieden werden sollte.
        Grüsse,
        Sebastian


        Profil Flex Freelancer
        Twitter twitter.com/flashhilfe
        Web Flash und Flex Community

        Kommentar

        Lädt...
        X