kleines prob., mit preg_replace und $this

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

  • kleines prob., mit preg_replace und $this

    hi,

    hab da ein kleines prob, mit preg_replace, folgendes:

    hab ne class und will in der class nun bbcodes ersetzen:

    $post = preg_replace("#\[galleryimg=([0-9]+)\]#siU", "$this->rrrgimg('\\1')", $post);

    so dat geht nun nicht, sprich, [galleryimg] wird gesucht, und die id davon herruasgefischt, diese id, soll nun an die function weitergegeben werden und wenn ich das so wie oben mache, bekomm ich folgendes:

    Notice: Undefined property: rrrgimg in c:\htdocs\usr\xiii\class_parse.php on line 193

    PS: 193 ist die zeile mit preg_replace

    achja und dat geht auch nicht:

    $post = preg_replace("#\[galleryimg=([0-9]+)\]#siU", $this->rrrgimg("\\1"), $post);

    da gibt mir die funk dann immer \1 zurück ...

    könnte mir da mal jemand helfen?

    danke

    ps: hatte gesucht, hab dann glaub auch alles ausprobiert, hat aber nichts gebracht.

  • #2
    was macht denn $this->rrrgimg('\\1')

    muss ja auf jeden fall irgendeinen string als rückgabewert haben. Hatt's den?
    Das das nicht geht, "$this->rrrgimg('\\1')", ist klar, denke ich.

    Kommentar


    • #3
      $this->rrrimg('\\1') sollte das hier als return zurückgeben:
      Code:
      function rrrgimg($id)
      {
      $rgimgs = $db->select("SELECT * FROM gallery_images WHERE catid=5", 0, 0, TRUE);
      while($gimgsa = $db->fetch_array($rgimgs)){
      	$gimgs[] = $gimgsa;
      }
      
       
      return "<img src=\"./gallery/5/thumbs/{$gimgs[$id]['image_url']}\" border=\"1\" class=\"image\" alt=\"{$gimgs[$id]['title']} - Zum vergrössern klicken\">";	
      }

      Kommentar


      • #4
        warum so umständlich

        PHP-Code:
        function rrrgimg($id)
        {
        $result=$db->select("SELECT * FROM gallery_images WHERE catid='5' AND id='$id'"00TRUE);
        $return=$db->fetch_array($result);
         
        return 
        "<img src=\"./gallery/5/thumbs/".$return['image_url']."\" border=\"1\" class=\"image\" alt=\"".$return['title']." - Zum vergrössern klicken\">";    

        fallst du umbedingt deine variante benutzen willst versuche es mal so

        PHP-Code:
        function rrrgimg($id)
        {
        $rgimgs $db->select("SELECT * FROM gallery_images WHERE catid=5"00TRUE);
        while(
        $gimgsa $db->fetch_array($rgimgs)){
            
        $gimgs[$gimgsa['id']]=$gimgsa;
        }

         
        return 
        "<img src=\"./gallery/5/thumbs/{$gimgs[$id]['image_url']}\" border=\"1\" class=\"image\" alt=\"{$gimgs[$id]['title']} - Zum vergrössern klicken\">";    

        alles ungetestet....
        [COLOR=#9C5245]Internet-Explorer[/COLOR] [COLOR=#334D7B]User und stolz drauf! :P[/COLOR]

        Kommentar


        • #5
          ähm, ja .. und wat bringt mir das ?

          die obere variante, ist nicht grade gut, denn ich will mehrere [galleryimgs] ersetzen, die jewlas eine andere id haben und wenn ich das so machen würde, wie du mir gesagt hast, dann müsste ich für jede id nen select machen, vollkommen sinnlos

          und das untere.. was ist daran anderst, ausser das dass array jetzt anderst aussieht ? bringt ja eh nix ..

          ncoh jemand ne idde ?

          Kommentar


          • #6
            hast du dir denn $gimgs[$id]['image_url'] schon mal ausgeben lassen?

            und ich versteh nicht, wie du mit der funktion für mehrere id's nur einen select machst !?
            Dur gibst doch eh nur einen datensatz zurück, den mit id=$id !?
            Und was die geschweiften Klammern im return sollen, versteh ich auch nich. <-- doch jetzt versteh ich's
            Zuletzt geändert von graf; 26.03.2003, 19:59.

            Kommentar


            • #7
              also, wenn ich es so mache:
              $post = preg_replace("#\[galleryimg=([0-9]+)\]#siU", $this->rrrgimg('\\1'), $post);

              und in der funktion dann echo $id mache, gibt er wie gesagt \1 zurück.

              hast du dir denn $gimgs[$id]['image_url'] schon mal ausgeben lassen?
              jup habe ich, das funkt ohne probs, das prob, ist nur die übergabe von der $id, also von \\1.

              Und was die geschweiften Klammern im return sollen, versteh ich auch nich.
              ist doch das gleiche wie ". und ." ...

              und ich versteh nicht, wie du mit der funktion für mehrere id's nur einen select machst !?
              Dur gibst doch eh nur einen datensatz zurück, den mit id=$id !?
              ich mache das so: ich selektiere alle einträge und speichere diese in einer datei ... (ist ne kleine db class, die ich mal gebaut hab ...), sprich ich cache das ergebnis ...

              Kommentar


              • #8
                was soll denn "\1" für ein index im array sein?
                $gimgs[1]['image_url'] <-- das versteh ich
                $gimgs[\1]['image_url' <-- das nicht
                was ich sagen will, ich hab den sinn der beiden "\\" (bzw. des "\" als eigentliche übergabe) bei der id-übergabe immer noch ich verstanden
                Zuletzt geändert von graf; 26.03.2003, 20:16.

                Kommentar


                • #9
                  ich versuch mal gleich zu erklären, aber zuerst ....

                  ICH HAB DEN FEHLER GEFUNDEN

                  wenn man das so macht, dann klappt es (zumindest bei mir *G*)
                  Code:
                  $post = preg_replace("#\[galleryimg=([0-9]+)\]#eiU", "\$this->rrrgimg('\\1')", $post);
                  ok, also ich versuch mal zu erklären:
                  ===========================
                  ein bsp:
                  ===========================
                  Code:
                  $post = preg_replace("#\[galleryimg=([0-9]+)\]#eiU", "\\1", $post);
                  also du hast einen text, darin enthalten ist z.b. folgendes:

                  test lalala [galleryimg=1]

                  so das preg_replace, fischt sich nun das galleryimg und holt die 1 raus, ok soweit?

                  $post = preg_replace("#\[galleryimg=([0-9]+)\]#eiU", "\\1", $post);
                  | [suche galleryimg=(eine zahl)] | ersetzte [galleryimg=(eine zahl)], durch die zahl, wo in galleryimg drin ist.

                  hast du nun z.b. sowas. [galleryimg=1], wird das ersetzt durch 1.

                  naja, ok ich gebs zu, ich kann net gut erklären *G*

                  PS: das \1 ist auch kein index, das ar ja der fehler

                  aber trotzdem danke =

                  Kommentar

                  Lädt...
                  X