Ankündigung

Einklappen
Keine Ankündigung bisher.

preg_replace zu preg_replace_callback

Einklappen

Neue Werbung 2019

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

  • preg_replace zu preg_replace_callback

    Hallo ich bräuchte einmal hilfe folgende preg_replace zeilen in preg_replace_callback umzuwandeln:



    Code:
        $text = preg_replace('#(^|[\n ])((http|https|ftp|ftps)://[\w\#$%&~/.\-;:=,?@\[\]\(\)+]*)#sie', "'\\1<span style=\'white-space:nowrap;\'>".$icon." <a href=\"'.trim('\\2').'\" target=\"_blank\" ><b>Link</b></a></span>'", $text);
        $text = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]\(\)+]*)#sie", "'\\1<span style=\'white-space:nowrap;\'>".$icon." <a href=\"http://'.trim('\\2').'\" target=\"_blank\" ><b>Link</b></a></span>'", $text);
    
        $text = preg_replace('#\[b\](.*?)\[/b\]#si', '\1', $text);
        $text = preg_replace('#\[i\](.*?)\[/i\]#si', '\1', $text);
        $text = preg_replace('#\[u\](.*?)\[/u\]#si', '\1', $text);
        $text = preg_replace('#\[s\](.*?)\[/s\]#si', '\1', $text);
        $text = preg_replace('#\[center\](.*?)\[/center\]#si', '\1', $text);
        $text = preg_replace('#\[left\](.*?)\[/left\]#si', '\1', $text);
        $text = preg_replace('#\[right\](.*?)\[/right\]#si', '\1', $text);
        $text = preg_replace('#\[quote\](.*?)\[/quote\]#si', '\1', $text);
        $text = preg_replace('#\[small\](.*?)\[/small\]#si', '\1', $text);
        $text = preg_replace('#\[small2\](.*?)\[/small2\]#si', '\1', $text);
        $text = preg_replace('#\[big\](.*?)\[/big\]#si', '\1', $text);
        $text = preg_replace('#\[alt\](.*?)\[/alt\]#si', '\1', $text);
        $text = preg_replace('#\[code\](.*?)\[/code\]#si', '\1', $text);
        $text = preg_replace('#\[think\](.*?)\[/think\]#si', '\1', $text);
        $text = preg_replace('#\[color=([\#a-f0-9]*?)\](.*?)\[/color\]#si', '\2', $text);
        $text = preg_replace('#\[bcolor=([\#a-f0-9]*?)\](.*?)\[/bcolor\]#si', '\2', $text);
        $text = preg_replace('#\[size=(12|16|20|24|28|32)\](.*?)\[/size\]#si', '\2', $text);
    
        $text = preg_replace("#\[img\]((http|ftp|https|ftps)://)(.*?)(\.(jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))\[/img\]#sie", "BILD", $text);
    wäre nett wenn ihr mir helfen könntet

  • #2
    Hast Du da irgendwas selbst versucht ?

    Kommentar


    • #3
      dieser code ist aus einem script welches leider nicht mehr zu neueren PHP versionen kompatibel ist und ich blicke das preg_replace einfach nicht

      Kommentar


      • #4
        Dann wende dich an den Hersteller der Software. Das hier ist kein Support-Forum für fremden Code.

        Kommentar


        • #5
          das problem ist das es den nicht mehr gibt

          ich erwarte/will ja nicht das ihr das komplett für mich umschreibt sondern nur um hilfe um das problem it dem /e Modifier zu lösen

          Kommentar


          • #6
            Du solltest zumindest ein paar Infos dazu liefern. Welche PHP-Version verwendest du und wo genau liegt das Problem bzw. wie lautet die Fehlermeldung? Und woher kommt die Schlussfolgerung, dass du preg_replace_callback() brauchst?

            Kommentar


            • #7
              Das ganze ist eine Infusion für PHP-Fusion.
              Verwendet wird PHP 5.6.40 (XAMPP), da dieses momentan nur auf PHP5 funktioniert.
              In PHP-Fusion gibt es einen Fehlerlog.
              Im Fehlerlog steht folgendes:

              Code:
              .\includes\functions.php
              preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead Zeile: 208
              
              .\includes\functions.php
              preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead Zeile: 168
              
              .\includes\functions.php
              preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead Zeile: 169

              Kommentar


              • #8
                Die Frage ist, ob Du den Modifier e benötigst, beim drüberfliegen ist mir jedenfalls kein PHP-Code in den Replacements aufgefallen.
                Dann finde ich das relativ ungeschickt gelöst. Fasse die Pattern und Replacements zu einem Array zusammen und jage das einmal durch den RegEx-Interpreter, bspw. ( gekürzt! ):
                PHP-Code:
                $rxReplacements = [
                    
                '#\[b\](.*?)\[/b\]#si' => '\1',
                    
                '#\[color=([\#a-f0-9]*?)\](.*?)\[/color\]#si' => '\2'
                ];

                $sNewText preg_replacearray_keys($rxReplacements), $rxReplacements$text ); 
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  danke ich werde das mal versuchen.
                  gibt es eine dokumentation zu dem preg_replace/RegEx patterns?

                  Kommentar


                  • #10
                    Logo, aktuelle Doku sollte Pflichtlektüre sein: https://www.php.net/manual/de/function.preg-replace.php
                    Und hier die Modifier: https://www.php.net/manual/de/refere....modifiers.php
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar

                    Lädt...
                    X