RegEXP, Wiki und Tabellen

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

  • #16
    EDIT:

    Ich hab es ein wenig verändert und nun scheints zu klappen:
    #\[(http://)(.+)(\s(.*))?\]#isUe



    Ich dank Dir für die Hilfen bisher. Habe schon einiges dazugelernt.
    Ich bastle gerade an einer Alternative dafür, die weitgehend auf komplexe Regexp verzichtet.
    Weisst Du, warum folgender Regexp nur auf \\2 etwas liefert?

    \[http://([^[:space:]]*)[[:space:]]?(.*)?\]
    Beispieleingabe war: [http://www.heise.de Heise Zeitung]
    Ausgabe mit Ersetzung "\\1 - \\2" war:

    - www.heise.de Heise Zeitung
    Zuletzt geändert von Norad; 17.11.2004, 13:03.

    Kommentar


    • #17
      Weisst Du, warum folgender Regexp nur auf \\2 etwas liefert?
      bei mir liefert er auch auf \1 etwas ^^

      http://pcre.nophia.de/evaluate/d2415...dex.php#output

      könnte aber u.u. am U (wenn verwendet) in kombination mit ? liegen

      aber verwende ruhig \s für leerzeichen bzw. \S für nicht-leerzeichen, ist übersichtlicher imho.
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #18
        Ich hab den Ausdruck für "{| |}" nochmal hergeleitet und dabei habe ich das \r weggelassen beim Regexp. Ohne \r funktionieren die Ersetzungen.
        Leider kenne ich noch nicht alle Seiteneffekte, die aus dem Fehlen entstehen. PHP 5.0.2 verhält sich jedenfalls bei den mit preg ausgewerteten Regexp anders, als PHP 4.x.y.

        Kommentar


        • #19
          So jetzt klappts auch mit dem Nachbar ... äh im Text. Unten stehen die Regeln, falls sie jemand für das Übersetzen einfacher Tabellen verwenden will. Ohne Deine Hilfe derHund wäre das nicht möglich gewesen.

          '#\{\|(.*)\n(.*)\|\}#Uis',
          '#\n-\n|\n\|----\n#m',
          '#\|(.*)#',
          '#\|\|#'
          '<table\1><tr>\2</tr></table>',
          "\n</tr><tr>\n",
          '<td>\1</td>',
          '</td><td>'
          P.S.: Als ich die Pattern verwendet habe, hat sich mein Codesegment für Wikitabellen von 23 auf 16 verkürzt und es werden nun mehr Muster unterstützt.
          Zuletzt geändert von Norad; 17.11.2004, 15:43.

          Kommentar


          • #20
            Wie müsste ich die Regexp ändern, damit auch folgendes unterstützt wird?

            {|
            | bgcolor="#999999#" | Einfach ein Text
            | und so weiter
            -
            | style="border:1px solid;" | Wieder ein Text
            |
            |}
            und

            {|
            ! Ich bin ein Tabellenkopf
            ! Ich auch
            -
            | 1
            | 2
            -
            | 3
            | 4
            |}

            EDIT:

            '#!(.+)#m'
            Ist eine Lösung, aber sollte einmal eine Zeile mit ! beginnen, dann wird sie zu <th>...</th> ersetzt, wie kann ich sowas verhindern?



            Beim ersteren soll der Text zwischen den || als Formatdefinition für das td-Tag ausgewertet werden.

            Meine Lösungem mit

            "#\|\s(.+)\s|\s(.*)#"
            und

            "#\n!\s(.+)#"
            führen mit den anderen Regeln zu einem Konflikt und zerschießen die Tabellenstruktur.
            Zuletzt geändert von Norad; 17.11.2004, 16:07.

            Kommentar


            • #21
              Ich glaube ich habe das Problem für die Regelanwendung erkannt. @derHund verwendest Du Windows?
              Ich lasse alles über Linux laufen, da kenne ich nur \n und kein \r\n. Damit dürfte das bei mir nicht passen, wenn ich einen nativ unter Linux editierten Text habe.

              Kommentar

              Lädt...
              X