"Alle zeilenumbrüche zwischen [html][/html] entfernen"

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

  • "Alle zeilenumbrüche zwischen [html][/html] entfernen"

    hi

    ist wahrscheinlich jetzt grad ne ziemlich peinliche frage, habe aber schon recht lange nicht mehr gross mit Regex gearbeitet.

    geht um folgendes, mache einen blog, für mich und meine schwester, dH wir sind die einzigen die darauf schreiben.

    jetzt ist es so, dass ich eine einfache formatierung ähnlich den BBCodes zulasse ( [fett: ein fetter text] zB).

    jetzt will ich aber (nur für mich) dass ich auch HTML code reinschreiben kann.

    ich habe mir das so gedacht:
    "
    HTML-Code:
    <p>irgendwas</p>
    "

    das innerhalb der HTML klammern auch als html auszugeben ist kein problem, habe aber ein problem, dass ein str_replace alle "\n" "\r" "\r\n" zu </br> umwandelt.

    dH ich hätte zwei möglichkeiten, dass die \n zwischen den html klammern NICHT in <br> umgewandelt werden.

    entweder ich passe den regex an, dass er nur ausserhalb der html klammern ersetzt, oder aber ich entferne zuerst alle \n innerhalb der HTML klammern.

    ich denke letzere variante ist einfacher. nur wie mach ich das?
    ich hab da den durchblick (bei einem so banalen) regex verloren. (steinigt mich)

  • #2
    entweder ich passe den regex an, dass er nur ausserhalb der html klammern ersetzt, oder aber ich entferne zuerst alle \n innerhalb der HTML klammern.
    ich würde ersteres empfehlen. sonst machst du den code unleserlich (zum debuggen).

    Kommentar


    • #3
      hm, stimmt eigentlich.

      also die sache sieht so aus:

      PHP-Code:
        $text str_replace(array("\r\n""\n""\r"), "<br>"$text); 
      ist also eben eigentlich kein regex, sondern ein einfacher str_replace()

      weiss jemand wie ich so einen regex mache wo es heisst "alle ... ersetzen ausser zwischen dem und dem"
      bin mal auf der regexlib.com am schauen, aber ist da nicht mal so leicht

      Kommentar


      • #4
        schau dir regexp-evaluator.de und das tutorial dort an. sehr hilfreich.

        Kommentar


        • #5
          ich hab mal dort versucht mit dem evaluator etwas passendes zu finden.
          komme aber nicht weiter.
          ich stecke bereits beim einfachen "ersetze alle zahlen innerhalb der klammern mit einem X" fest.
          ich habe auch bei google nichts gefunden, was eine suche "ausserhalb" von den klammern ermöglicht.

          Kommentar


          • #6
            okey, ich komme nicht weiter.

            ist so, ich bin eben ziemlich im stress, muss meinen blog noch diese woche (bis sonntag) fertig schaffen, und hab drum auch nicht mehr zeit, mich wieder gross in tutorials einzuarbeiten.

            ich weiss jetzt nicht ob so ein Regex schwer ist, aber es würde mich freuen wenn mir jemand so einen regex erstelle kann.

            falls derjenige paypal hätte würde ich ihm auch 5.70€ übeweisen (ist alles was ich noch drauf hab ^^ ). ist nicht viel, ich weiss aber besser als nix

            Kommentar


            • #7
              hat jemand ne idee wie man so einen regex machen könnte?

              Kommentar


              • #8
                habe aber ein problem, dass ein str_replace alle "\n" "\r" "\r\n" zu </br> umwandelt.
                Was mich hierbei auch nicht wundert
                PHP-Code:
                 $text str_replace(array("\r\n""\n""\r"), "<br>"$text); 
                Aber ich frage mich dabei, wenn du schon das Problem erkannt hast, warum du das nicht reparierst:
                PHP-Code:
                 $text str_replace(array("\n""\r"), ""$text);
                //oder
                 
                $text str_replace(array("\n""\r"), " "$text); 
                Diese verdoppelung: "\r\n" ist auch nicht notwendig...
                Dein Handbuch scheint ja voll kaputt zu sein
                Zuletzt geändert von combie; 10.05.2007, 19:35.
                Wir werden alle sterben

                Kommentar


                • #9
                  nun, dass mit dem \r\n also doppelt war soviel ich weiss mal so wegen den verschiedenen zeilenumbruch systemen.
                  \n war glaubs ein unix zeilenumbruch
                  \r\n ein windows zeilenumbruch
                  \r ein mac zeilenumbruch

                  weiss nicht mehr genau welcher für welches genau war, aber diese drei verschiedenen gibt (oder gab) es mal wirklich.

                  schau dazu mal hier

                  http://en.wikipedia.org/wiki/Newline...sion_utilities
                  perl -p -e 's/(\r\n|\n|\r)/\r\n/g' inputfile > outputfile # Convert to DOS
                  perl -p -e 's/(\r\n|\n|\r)/\n/g' inputfile > outputfile # Convert to UNIX
                  perl -p -e 's/(\r\n|\n|\r)/\r/g' inputfile > outputfile # Convert to old Mac
                  also mag sein, dass der code überflüssig ist, auch nach \r und \r\n zu filtern, da kaum mehr "old Mac" und "DOS" rumsurfen, trotzdem sicher ist sicher.

                  aber wie man nun so einen regex machen kann, dass nur ausserhalb der klammern ersetzt wird, weiss ich leider noch nicht

                  Kommentar


                  • #10
                    also mag sein, dass der code überflüssig ist, auch nach \r und \r\n zu filtern, da kaum mehr "old Mac" und "DOS" rumsurfen, trotzdem sicher ist sicher.
                    Hmm..
                    Ich glaube, du hast mich nicht richtig verstanden

                    Wenn du "\r" und "\n" austauscht oder wegmachst, dann hast du automatisch auch "\r\n" mit erwischt! Darum ist es auch doppeltgemoppelt und damit vollständig unnötig.

                    Aber was solls... mir kanns egal sein...
                    Wir werden alle sterben

                    Kommentar


                    • #11
                      ah so meinst du.
                      ja hast wohl recht.

                      trotzdem am eigentlichen problem ändert das ja nichts.

                      Kommentar


                      • #12
                        wieso benutzt Du die von Combie gepostete Lösung nicht ?

                        Keine Angst - das darfst Du - der Code tut Dir nichts.

                        Kommentar


                        • #13
                          warum ich den nicht benutze?


                          weil es dann
                          PHP-Code:
                          $text str_replace(array("\n""\r"), ""$text); 
                          gar keine umbrüche mehr gibt.
                          der sinn ist ja dass die zeilenumbrüche schon nach <br> umgewandelt werden, jedoch nur wenn sie ausserhalb der [html] klammern liegen.

                          Kommentar


                          • #14
                            Original geschrieben von fabio
                            warum ich den nicht benutze?
                            weil es dann
                            PHP-Code:
                            $text str_replace(array("\n""\r"), ""$text); 
                            gar keine umbrüche mehr gibt.
                            der sinn ist ja dass die zeilenumbrüche schon nach <br> umgewandelt werden, jedoch nur wenn sie ausserhalb der [html] klammern liegen.
                            außerhalb?
                            <br>s haben außerhalb von <html>...</html> nichts zu suchen. oder habe ich da was falsch verstanden?

                            gruß
                            peter
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Kommentar


                            • #15
                              Re: &quot;Alle zeilenumbrüche zwischen entfernen&quot;

                              OffTopic:
                              Da lobe ich mir doch die BBCode-Parserklasse von Christian Seiler.
                              Abgesehen davon, dass die einen wirklichen Parser nutzt, und nicht mit ein paar regulären Ausdrücken simpel irgendwas sucht und ersetzt - wobei eine korrekte Einhaltung von Verschachtelungsregelungen bei etwas aufwendigeren Codes mit vertretbarem Aufwand praktisch unmöglich, das Resultat also potentieller Nonsense ist - den Wunsch, mittels eines Tags [html] HTML-Code direkt eingeben zu können, der in keinster Weise verändert werden soll, kann ich dort einfach umsetzen, in dem ich für diesen Tag die entsprechende Option setze.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X