Maximale Größe mit RegExp (Forum)

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

  • Maximale Größe mit RegExp (Forum)

    Hallo,
    ich benutze in einem selbst geschriebenen Forum reguläre Ausdrücke um die Formatierung durch Board-Tags zu ermöglichen.

    Einer davon ist [img]BILDADRESSE[/img ].

    Nun sprengen mir des öfteren riesige Bilder die gepostet werden den Designrahmen. Ich möchte gerne das ganze mit GetIMAGESIZE auf eine Größe einschränken, allerdings weiß ich nicht genau wie.

    Folgendermaßen sieht es aus:

    PHP-Code:
    // Bild
    $text eregi_replace("\\[img]([^\\[]*)\\[/img]","<img src=\"\\1\" border=0>",$text); 
    Ich habe versucht ins zweite Argument davon eine IF Bedingung einzubauen, aber das funktioniert erwartungsgemäß nicht.
    Habe auch verscuht nur die BIldadresse in die variable Text zu Schreiben, diese dann mit getimagesize zu überprüfen und dann erst die eigentliche Ausgabe zui bauen, das scheitert aber daran das er get-image size auch auf alle anderen Boardtags anwendet, da die Variable $text da überall verwendet wird und diese in meiner functions.php nacheinander abgearbeitet werden.

    Steh ich total aufm Schlauch oder ist min Ansatz da falsch?

    Wäre für Hilfe dankbar, Gruß Flo

  • #2
    CSS
    .test_img
    {
    max-width: 400px;
    }
    Slava
    bituniverse.com

    Kommentar


    • #3
      ^^ Da hät ich drauf kommen können das mit css zu machen...

      Also doch der Schlauch.

      Allerdings wird das Design jetzt immer noch verzerrt. Das Bild is zwar so groß wies soll, allerdings ist die Breite trotzdem so groß, als wenn das Bild gar nicht limitiert wäre.

      EDIT: Der Internet Explorer ignoriert das ganze komplett.
      Zuletzt geändert von FloPe; 21.10.2006, 18:39.

      Kommentar


      • #4
        Ja, der IE kennt kein max-width.

        Aber du kannst es in ein umgebendes div packen, und diesem div eine Breite geben und dann overflow: auto; definieren, dann zeigt er dir Scrollbars an oder overflow: hidden, dann wird es einfach abgeschnitten.
        hopka.net!

        Kommentar


        • #5
          Naja das mit dem IE wird sich evtl mit IE 7 von selbst lösen.

          Was mich stört, ist das wie gesagt in meinem Opera das Design trotdem auseinanderezerrt wird, wenn ich beispielsweise ein Bild einfüge mit 1024px breite. Das Bild wird dann kleiner dargestellt, aber das Designt wird trotzdem auf 1024px gestreckt.

          Kommentar


          • #6
            verdamt!
            ich habe vergessen, dass blöde IE damit probleme hat.
            Slava
            bituniverse.com

            Kommentar


            • #7
              versuch bitte so
              PHP-Code:
              function callfunc($erg){
               
              $size=getimagesize($erg[1]);
               if(isset(
              $size[0])&& $size[0]>400
               return 
              "<img src=\"".$erg[1]."\" width=\"400px\" border=0>";
               return 
              "<img src=\"".$erg[1]."\" border=0>";

              $text=preg_replace_callback("/\[img]([^\[]*)\[\/img]/i","callfunc",$text);
              Zuletzt geändert von Slava; 21.10.2006, 19:23.
              Slava
              bituniverse.com

              Kommentar


              • #8
                Habs jetzt auch so hingekriegt, mit der geschickten Plazierung von overflow.

                Werd das aber jetzt auch mal noch so probieren, denn dann würds ja auch mit dem IE einwandfrei funktionieren.

                Danke schonmal.

                Kommentar


                • #9
                  So habs gerade ausprobiert. Mit deiner Funktion dauert das sehr lange bis die Seite geladen ist, ich nehme an weil sämtliche Bilder zuerst gecheckt werden.

                  Da ist es nur mit CSS um Längen schneller, dafür funktioniert dieses hier einwandfrei mit dem Internet-Explorer...

                  hmm da mus ich mich wohl entscheiden, mal sehen wie schnell es auf dem Webserver läuft.



                  EDIT: Nee, so braucht die Seite echt über ne Minute bis sie dargestellt wird. Dann verzicht ich lieber auf den IE und die Seite is schneller geladen. Sind halt ein paar Bilder auf der Seite und die werden dann wohl alle erst geladen, keine Ahnung dauert aber sehr lange.
                  Zuletzt geändert von FloPe; 21.10.2006, 19:54.

                  Kommentar


                  • #10
                    du könntest vielleicht noch die lösung "overflow" mit js kombinieren (für den ie).
                    Code:
                    .bild
                     {
                      width:expression(this.width > 800 ? 800 : this.width);
                     }

                    Kommentar


                    • #11
                      Habe noch ein bisschen gegoogelt und dann das hier gefunden:

                      width:expression((body.offsetWidth>550)?'550px':'auto');

                      Das funktioniert auch, jedenfalls wird das Design nicht zerstört, statt aber nur größere BIlder zu stauchen streckt er kleinere auch auf 550px, was muss ich da hinten hinschreiben, damit er kleinere Bilder lässt wie sie sind?

                      Kommentar


                      • #12
                        wenn du das sowieso mit javascript machst, dann kannst du es auch so machen:

                        <img src=".....JPG" onLoad="javascript:if(this.width>400)this.width=400;" />

                        das wird bei jedem Browser, der javascript versteht richtig funktionieren und die kleinere Bilder werden ihre Gosse beibehalten
                        Zuletzt geändert von Slava; 22.10.2006, 15:38.
                        Slava
                        bituniverse.com

                        Kommentar

                        Lädt...
                        X