Problem mit preg_replace

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

  • Problem mit preg_replace

    Ich habe hier eine Codezeile:

    PHP-Code:
    $string=preg_replace("\\[img_2]([^\\[]*)\\[/img_2]",
    "'<img src=\"images/'.Bild('\\1').'\" border=0>'",
    $string); 
    und bekomme diesen Fehler:

    Warning: Delimiter must not be alphanumeric or backslash in /www/htdocs/susa/inc/lib.inc.php on line 31

    ist das erste Mal, dass ich diese Funktion verwende, die Funktion Bild($id) sucht aus einer Tabelle einen Dateinamen heraus. Was habe ich falsch gemacht und wie bekomme ich den Code wieder zum Laufen?

    THX

  • #2
    PHP-Code:
    $string=preg_replace("#\[img_2]([^\[]*)\[/img_2]#is",
    "'<img src=\"images/'.Bild('\1').'\" border=0>'",
    $string); 
    mach mal so

    Die #(Raute) stellen die Delimiter!

    Kommentar


    • #3
      @MTCook

      Müssen da noch andere Zeichen rein? Da das Forum auch bei mir einige Zeichen herausgenommen hat, vor allem Backslashes.

      Kommentar


      • #4
        wie ich sehe willst du eine function aufrufen.
        Da must du noch so weit ich weiß noch ein "e" hinter "is" setzen.

        Ganz so gut kenne ich mich mit regex auch nicht aus.
        Ich finde sowas meistt durch probieren raus!

        Kommentar


        • #5
          ich bin leider immer noch nicht weiter *heul*


          PS: Gibt es eine Möglichkeit, dem [IMG] noch 2 Variablen für die Höhe und Breite mitzugeben? Wenn ja, wie mache ich das?

          Kommentar


          • #6
            PS: Gibt es eine Möglichkeit, dem [IMG] noch 2 Variablen für die Höhe und Breite mitzugeben?
            ja, na sicher.
            Wenn ja, wie mache ich das?
            einfach angeben, und im regexp umwandeln ....
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              @derHund

              ich suche mir schon einen Wolf im Forum und ich finde nichts brauchbares und das Tut hilft mir mit der Funktion auch nicht weiter! Ich bekomme nicht einmal die Funktion in dem String zum Laufen

              Kommentar


              • #8
                Ich bekomme nicht einmal die Funktion in dem String zum Laufen
                tja, klagen hilft wohl nicht viel. fehler besser beschreiben schon eher. was geht nicht?

                laß dir z.b. die matches erst einmal per preg_match_all ausgeben

                ansonsten,
                Ich finde sowas meistt[sic] durch probieren raus!
                oder klick in meine signatur.
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  @derHund

                  Das eregi_replace des [ img ]...[ /img ] funzt. doch nun habe ich ein paar Bilder in der Datenbank gespeichert. die werden mit der Funktion Bild($id) ausgelesen und sollen in einem [img_2]$id[/img_2] ausgegeben werden. Um eine Funktion in einer solchen Sache zu verwenden, muss ich preg_replace verwenden, das habe ich verstanden. Doch wenn ich das Beispiel (wenn das überhaupt eins ist) aus den Handbuch genommen und meinen Bedürfnissen angepasst. Doch nun bekomme ich den obenstehenden Fehler mit dem Delimiter. Ich komme aber mit den ganzen Informationen nicht weiter. Es wäre mir momentan egal, wie das mit der height und der width gehen soll. Wenn das auch noch gehen sollte, wäre ich froh.

                  Kommentar


                  • #10
                    Doch nun bekomme ich den obenstehenden Fehler mit dem Delimiter.
                    ein scherz?

                    siehe post von MTCook, der hatte dich doch drauf hingwiesen ... außerdem hilft es manchmal, die meldungen einfach zu übersetzen ...
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar


                    • #11
                      ich habe das soweit zum Laufen bekommen, aber irgendwas stimmt immer noch nicht er sucht mir ein Bild heraus, leider immer nur das erste

                      PHP-Code:
                       $string=preg_replace("#\[img_2]([^\\[]*)\\[/img_2]#e",
                      '"<img src=\"images/'.Bild('\\1').'\" border=0>"',
                      $string); 

                      Kommentar


                      • #12
                        nur mal so als schuss ins blaue: mach hinter #e noch ein U
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          das U bringt keine Änderung, er sucht mir immer noch das erste Bild raus, liegt wohl an der \\1 in dem Funktionsaufruf?

                          Kommentar


                          • #14
                            kein ahnung was du machst

                            PHP-Code:
                            function Bild($name) {
                                return 
                            $name;
                            }
                            $string '[img_2]hallo[/img_2] du [img_2]da[/img_2] wer';
                            echo 
                            $string=preg_replace("#\\[img_2\\]([^\\[]*)\\[/img_2\\]#eU",
                            '"<img src=\"images/'.Bild('\1').'\" border=0>"',
                            $string); 
                            funktioniert bei mir einwandfrei
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              guck doch selbst, die Funktion sucht mir den Dateinamen aus der Datenbank raus, jedoch wenn ich das '\\1' in der Funktion Bild() angebe, sucht er mir nur das erste Bild raus, ich lasse nunmal leider nach Nummern suchen :-( ich finde das mit dem preg_replace zu kompliziert, da ist das mit dem eregi_replace viel einfacher gewesen, denn das funzt bei mir
                              das Bild, was gleich auf der Startseite kommt, soll nicht 06.jpg heißen, das ist nämlich das erste Bild in der Tabelle, sondern anders

                              Kommentar

                              Lädt...
                              X