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

  • Muetze
    hat ein Thema erstellt preg_match_all - Wie andwenden?.

    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

  • nikosch
    antwortet
    Nicht wenn man erwartet, von anderen verstanden und respektiert zu werden.

    Einen Kommentar schreiben:


  • Muetze
    antwortet
    Ja, die bekommst Du aber kostenlos & darfst damit machen was Du willst.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • Muetze
    antwortet
    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.

    Einen Kommentar schreiben:


  • jw-lighting
    antwortet
    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.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Dann dürfte <textarea> aber auch nicht funktionieren, weil dort vermutlich die Klammern escaped werden.

    Einen Kommentar schreiben:


  • Muetze
    antwortet
    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

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Wieso sollte ein CMS <br> in eine Textarea schreiben? Das ist syntakltisch falsch!

    Einen Kommentar schreiben:


  • Muetze
    antwortet
    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

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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.

    Einen Kommentar schreiben:


  • Muetze
    antwortet
    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.

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    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?

    Einen Kommentar schreiben:


  • Muetze
    antwortet
    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

    Einen Kommentar schreiben:


  • tarzanhb
    antwortet
    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); 

    Einen Kommentar schreiben:

Lädt...
X