Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_match_all - Wie andwenden?

Einklappen

Neue Werbung 2019

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

  • preg_match_all - Wie andwenden?

    Hallo, ich hoffe ich bin hier richtig, habe nach Stunden langen suchen in diversen Foren leider keine Lösung gefunden.
    Und zwar möchte ich eine eine Seite nach <textarea(*)</textarea> durchsuchen & in an der Stelle (*) alle gefundenen <br /> mit \n austauschen.

    Ich habe auch schon diverses erfolglos probiert, zBsp so:
    PHP-Code:
        preg_match_all("/\<textarea (.*)<\/textarea>/i",$site,$treffer);
        foreach(
    $treffer[0] as $wert) {
            
    $wert str_replace("<br />","\n",$wert);
        } 
    $site ist die Ausgabe von meinem CMS (PHPKIT), ich hoffe hier kann mir einer weiter helfen.
    Danke im Voraus.


    MfG
    [CENTER]Es geht nicht darum zu haben was man will, sonder zu schätzen was man hat![/CENTER]

  • #2
    Warum nicht [MAN]preg_replace[/MAN]?

    Abgesehen davon erscheint es mir, als packst du an der falschen Stelle an.
    [I]Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)[/I]
    [I]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/I]

    Kommentar


    • #3
      Hi,

      denke dein Pregmatch sollte wie folgt sein.
      PHP-Code:
      preg_match_all("/<textarea (.*?)<\/textarea>/i",$site,$treffer); 
      Dann sind die Treffer nicht im ersten Array Element sondern im zweiten.
      Also über
      PHP-Code:
      foreach($treffer[1] as $wert) { 
      iterieren.
      Dazu überschreibst du deinen Wert hier immer beim iterieren!
      PHP-Code:
      $wert str_replace("<br />","\n",$wert); 

      Kommentar


      • #4
        Von mir aus auch preg_replace, nur wie? Es sollen ja nur die <br /> in einer Textarea umgewandelt werden.

        Von welcher Seite soll ich es denn sonst anpacken? In der Datenbank stehen die Daten ja mit Zeilenumbruch drin, nur das CMS wendet bei der Ausgabe immer nl2br mit dem kompletten Text an.

        @tarzanhb: Funktioniert leider auch nicht.

        MfG
        [CENTER]Es geht nicht darum zu haben was man will, sonder zu schätzen was man hat![/CENTER]

        Kommentar


        • #5
          Zitat von Muetze Beitrag anzeigen
          In der Datenbank stehen die Daten ja mit Zeilenumbruch drin, nur das CMS wendet bei der Ausgabe immer nl2br mit dem kompletten Text an.
          Dann solltest du diesen Fehler beheben.

          Was für ein CMS ist das?
          [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

          Kommentar


          • #6
            Was denn für ein Fehler? nl2br ist eine Gängige Funktion & diese allgemein auszuführen für Alle Texte ist wohl wesentlich einfacher, als es für jeder einzelnen Stelle zu machen. Oder was ist daran falsch?

            Es handelt sich, wie oben beschrieben um das CMS PHPKIT.
            [CENTER]Es geht nicht darum zu haben was man will, sonder zu schätzen was man hat![/CENTER]

            Kommentar


            • #7
              Zitat von Muetze Beitrag anzeigen
              nl2br ist eine Gängige Funktion & diese allgemein auszuführen für Alle Texte ist wohl wesentlich einfacher, als es für jeder einzelnen Stelle zu machen. Oder was ist daran falsch?
              Genau das, was im Satz vor der Frage steht, ist falsch.
              [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

              Kommentar


              • #8
                Das preg_replace war ein gute Stichpunkt.

                Ich bin jetzt wie folgt vorgegangen:
                PHP-Code:
                    preg_match_all("#\[php(.*)\](.*)\[/php(.*)\]#Usi",$site,$treffer);
                    foreach(
                $treffer[0] as $wert) {
                    
                srand(microtime()*1000000);
                    
                $zufall rand(1,10000);

                    
                $neu preg_replace("#\[php(.*)\](.*)\[/php(.*)\]#Usi",'<textarea cols="70" rows="10">\\2</textarea>',$wert);
                    
                $neu str_replace("<br />","",$neu);
                    
                $site str_replace($wert,$neu,$site);
                    } 
                und es funktioniert, ich danke allen beteiligten Helfer für Ihre Beteiligung.
                (Wer sich wunder was der Zufall da sucht...die Textarea bekommen eine ID.)


                MfG
                [CENTER]Es geht nicht darum zu haben was man will, sonder zu schätzen was man hat![/CENTER]

                Kommentar


                • #9
                  Wieso sollte ein CMS <br> in eine Textarea schreiben? Das ist syntakltisch falsch!
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #10
                    In dem CMS ist als "BBCODE" keine Textarea vorgesehen, die habe ich selbst hinzugefügt, da ich den Codepress Parser nutzen möchte.

                    Da es aber eigentlich keine Textarea gibt, gibt die BBCODE Class einfach Alles was von Benutzern geschrieben wird mit nl2br aus.

                    Der Zufallswert ist auch alt, habe mir das von einem anderen Code abgeschaut, werde mt_rand nutzen.

                    MfG
                    [CENTER]Es geht nicht darum zu haben was man will, sonder zu schätzen was man hat![/CENTER]

                    Kommentar


                    • #11
                      Dann dürfte <textarea> aber auch nicht funktionieren, weil dort vermutlich die Klammern escaped werden.
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        Für mich würde das bedeuten - benutze ein anderes CMS.

                        Weil einen unvaliden Code den das CMS ausspuckt in Validen zurückwandeln zu müssen ist irgendwie - blöd.

                        Kommentar


                        • #13
                          Zitat von nikosch Beitrag anzeigen
                          Dann dürfte <textarea> aber auch nicht funktionieren, weil dort vermutlich die Klammern escaped werden.
                          Wenn ein User HTML Codes: Ja, wenn man entsprechend der das in der BBCode Datei macht geht es, muss ja gehen, man wandelt ja schließlich bei BB-Codes nur [B] in <strong> um oder so was.

                          Welches CMS hat denn den die Funktion einer Textarea drin? Und mein CMS ist ja komplett XHTML. CSS2, CSS3 Valid nach ein paar Anpassungen.
                          [CENTER]Es geht nicht darum zu haben was man will, sonder zu schätzen was man hat![/CENTER]

                          Kommentar


                          • #14
                            Wenn Du nen ordentlichen BB-Parser hast, wandelt er vorher alles bedenkliche in Entities um. Das ist ja gerade der Zweck von BBCode - dass der User zwar Auszeichnungen vornehmen kann (und zwar nahe an der bekannte HTML-Formatierung), aber eben kein beliebiges HTML benutzen.

                            CSS2, CSS3 Valid nach ein paar Anpassungen.
                            Deine Rechtschreibung ist leider weniger valide.
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #15
                              Ja, die bekommst Du aber kostenlos & darfst damit machen was Du willst.
                              [CENTER]Es geht nicht darum zu haben was man will, sonder zu schätzen was man hat![/CENTER]

                              Kommentar

                              Lädt...
                              X