Problem beim Umwandeln des UBB-Codes

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

  • Problem beim Umwandeln des UBB-Codes

    Also mal vor ab:

    ich habe ein forum gebastelt mit ubb als feature... ich speichere zb das bild so in der datenbank ab:
    [img]htt://url.des.bildes.de/bild.jpg[/img]

    nun gehe ich bei der post anzeige einfach hin und setze den inhalt eines jeden posts in die funktion "do_ubb" sprich: do_ubb(utf8_decode(row->inhalt))

    nun hab ich ein problem... wenn jemand bilder ausm internet (zb imageshack postet... und diese zu groß sind, dann zerschiessen die mir das ganze layout...

    PHP-Code:
     $string eregi_replace("\\[img\\]([^\\[]*)\\[/img\\]",
    "<a href='\\1' target='_blank'><img src='\\1' border='0' width='100'>
    </a>"
    ,$string); 

    return(
    $string); 
    es funktioniert wunderbar... ich will aber nicht ALLE bilder mit breite 100 ausgeben, sondern nur bilder deren breite größer ist als 100. wenn ich das in der funktion do_ubb schon mit getimagesize() versuche, dann klappt es nur, wenn der post nur ein bild hat, wenn man mehrere bilder innerhalb eines posts hat, kriegt die getimagesize funktion alle bilder-urls und das bringt natürlich einen fehler....

    habe dann auch noch folgende funktion ausprobiert:

    PHP-Code:
    function ResizeImage($url$maxvalue$type='width')
    {
      
    $ImgInfo getimagesize($url);
      
    $ImgWidth $ImgInfo[0];
        
    $ImgHeight $ImgInfo[1];
      if ((
    $ImgHeight $maxvalue) && ($type=='height'))
      {
         
    $ImgHeight $maxvalue;
         
    $percent = ($ImgInfo[1] / $ImgHeight);
         
    $ImgWidth = ($ImgInfo[0] / $percent);
      }
      if ((
    $ImgWidth $maxvalue) && ($type=='width'))
      {
         
    $ImgWidth $maxvalue;
         
    $percent = ($ImgInfo[0] / $ImgWidth);
         
    $ImgHeight = ($ImgInfo[1] / $percent);
      }
      return 
    '<img src="'.$url.'" style="width:'.round($ImgWidth).'px;
     height:'
    .round($ImgHeight).'px; margin:10px 0 10px 0;
     border:0 none;" alt="" />'
    ;

    die ich dann so aufgerufen habe aus der do_ubb funktion:

    PHP-Code:
     $string ResizeImage(eregi_replace("\\[img\\]([^\\[]*)\\[/img\\]",
    "\\1",$string),150,'width'); 
    aber das funktioniert auch nicht. wenn mehrere bilder in einem post sind, dann nimmt resizeimage alle images mit in die getimagesize funktion und das klappt ja natürlich nicht...

    könnte mir jemand einen tipp geben?
    Zuletzt geändert von Jemand; 17.07.2007, 22:54.

  • #2
    Re: Problem beim Umwandeln des UBB-Codes

    Regeln lesen, Code umbrechen.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      oh tut mir leid, habe es geändert (hoffe es geht so)

      Kommentar


      • #4
        preg_replace_callback anschauen.
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar


        • #5
          danke schön. werd ich gleich mal machen.



          super! hat wunderbar funktioniert!!! vielen vielen dank.


          jetzt stell ich mir nur noch die frage warum es dadurch aber so lange dauert bis er alles anzeigt... (liegt nicht an der bildquelle).

          steht halt immer: warten auf ...(webserver) .. ich denke mal dass die funktion so lange braucht...

          PHP-Code:
          function parseTagsRecursive($eingabe)
          {
            
          $regex '#\[img]((?:[^[]|\[(?!/?img])|(?R))+)\[/img]#';

            if (
          is_array($eingabe)) {
              
          $size getimagesize($eingabe[1]);
              if (
          $size[0] > 100)
              {
                
          $eingabe '<a href="'.$eingabe[1].'" target="_blank">
                <img src="'
          .$eingabe[1].'" border="0" width="100"></a>';
              }
              else
              {
                
          $eingabe '<a href="'.$eingabe[1].'" target="_blank">
                            <img src="'
          .$eingabe[1].'" border="0"></a>';
              }
            }

            return 
          preg_replace_callback($regex'parseTagsRecursive',
           
          $eingabe);

          oder woran kann es noch liegen? doch an den bildern?
          Zuletzt geändert von Jemand; 18.07.2007, 11:09.

          Kommentar


          • #6
            jetzt stell ich mir nur noch die frage warum es dadurch aber so lange dauert bis er alles anzeigt... (liegt nicht an der bildquelle).
            Der Server muss die Bilder laden, die Bildgröße berechnen, der Client muss die bilder alle in Original-Größe laden und dann anzeigen - das kann schon dauern.
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar


            • #7
              also ist die funktion an sich schon "schnell"?

              also wenns nur an den bildern und der lade- und berechnungszeit liegen sollte, dann bin ich zufrieden....

              dann kann das thema geclosed werden^^

              und noch einmal ein riesen danke schön für die hilfe!!

              Kommentar

              Lädt...
              X