AutoURL AutoBild wo ist der Denkfehler

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

  • AutoURL AutoBild wo ist der Denkfehler

    Hallöchen,
    habe irgendwie einen Denkfehler und weiss garnicht mehr wie ich es lösen könnte.

    Ich habe eine Textdatei die ich auslese in der stehen könnte
    Meine neue Webseite www.bla.de ist die nicht toll http://www.bla.de/bilder/tollesbild.gif

    Nun will ich das er Automatisch aus der URL einen Link zaubert und aus dem Bild mir auch ein Bild macht. Ich habe es ansatzweise gelöst nur ist da irgendwo ein denkfehler.

    PHP-Code:
    bla bla 

              
    if ((strstr($line[$i],".gif")) || (strstr($line[$i],".jpg")) || (strstr($line[$i],".bmp")) 
    || (
    strstr($line[$i],".png")) || (strstr($line[$i],".swf"))) 
            {    
            if (
    strstr($line[$i],"http://"))
            {
                
    $start strpos ($line[$i], "http://");  
                
    $end strpos ($line[$i], ".gif");
                
    $bild substr($line[$i], $start $end $start 4);
            }
                
    $size getimagesize("$bild");
                   
    $height $size[1];
                   
    $width $size[0];
            
               if (
    $height 15)
              {
                   
    $height 15;
                   
    $percent = ($size[1] / $height);
                   
    $width = ($size[0] / $percent);
              }
             else if (
    $width 50)
             {
                   
    $width 50;
                   
    $percent = ($size[0] / $width);
                   
    $height = ($size[1] / $percent);
             }
             
            
             
                  
    $hack '§(?<!(\]|=|"|>))([url]http://[/url])([;_=\-\#\?\
    /\&a-zA-Z0-9\.]*)§'
    ;
                  
    $code "<img src=\"http://\\3\" height=\"$height\" width=\"$width\">";
                  
    $line[$i] = preg_replace($hack,$code,$line[$i]);
                  
    $hack '§(?<!(/|\]|>|=|"))([url]www.[/url])([;_=\-\#\?\
    /\&a-zA-Z0-9\.]*)§'
    ;
                  
    $code "<img src=\"http://\\3\">";
                  
    $line[$i] = preg_replace($hack,$code,$line[$i]);    
            }
            else
            { 
                  
    $hack '§(?<!(\]|=|"|>))([url]http://[/url])([;_=\-\#\?\
    /\&a-zA-Z0-9\.]*)§'
    ;
                  
    $code "<a target=\"_blank\" href=\"http://\\3\">\\3</a>";
                  
    $line[$i] = preg_replace($hack,$code,$line[$i]);
                  
    $hack '§(?<!(/|\]|>|=|"))([url]www.[/url])([;_=\-\#\?\
    /\&a-zA-Z0-9\.]*)§'
    ;
                  
    $code "<a target=\"_blank\" href=\"http://www.\\3\">
    [url]www.\\3[/url]</a>"
    ;
                  
    $line[$i] = preg_replace($hack,$code,$line[$i]);
            }

    bla bla 
    Das Script wandelt Bilder einwandfrei um natürlich nur gifs, auch wenn ich in einer weiteren Zeile eine URL stehen habe bekomme ich diese auch umgewandelt. Wenn aber URL und Bild in einer Zeile aufeinander treffen will er die URL als Bild anzeigen.

    Allerdings logisch da ich auch abfrage ob ein gif in der Zeile vorhanden ist. Das gibt es natürlich und da ist die URL auch gleich ein Bild.

    Hat jemand vielleicht eine bessere idee wie ich URL und Bild trennen kann ?
    Zuletzt geändert von Mundgeruch; 03.09.2005, 18:43.

  • #2
    wieso machst du nicht einfach n RegEx und lässt alles ersetzen???
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Weil ich einfach keinen Plan habe wie ich genau das anstellen soll. Hab einige Seiten gefunden und blick da irgendwie nicht wirklich durch. Vielleicht brauch ich einfach eine bessere erklärung ... bin halt nicht mehr der Jüngste

      Kommentar


      • #4
        Guten Abend,
        muss schon sagen das Thema schein wirklich recht komplex zu sein, habe mir mal durchgelesen und es hat mir geholfen.

        Funktioniert nun wohl einwandfrei

        Kommentar


        • #5
          Guten Morgen,
          habe trotzdem noch ein Problem was nicht aufgehen möchte.

          PHP-Code:
                          $hack '§(?<!(\]|=|"|>))([url]http://[/url])([;_=\-\#\?\
          /\&a-zA-Z0-9\.]*(.gif|.jpg))§'
          ;
                        
          $code "<img src=\"http://\\3\" width=\"$width\" height=\"$height\">";
                        
          $line[$i] = preg_replace($hack,$code,$line[$i]);
                        
          $hack '§(?<!(/|\]|>|=|"))([url]www.[/url])([;_=\-\#\?\

          /\&a-zA-Z0-9\.]*
          (.gif|.jpg))§'
          ;
                        
          $code "<img src=\"http://\\3\" width=\"$width\" height=\"$height\">";
                        
          $line[$i] = preg_replace($hack,$code,$line[$i]); 
          So bekomme ich nun automatisch wenn in der URL .gif steht ein Bild angezeigt. Die Bilder dürfen aber nur eine max Höhe von 15 px haben. Ich muss irgendwie vorher den Wert ermitteln nur wie ?

          Eine Lösung hätte ich evtl. aber auch hier komme ich nicht ganz zum Ziel.

          PHP-Code:
                          $hack '§(?<!(\]|=|"|>))([url]http://[/url])([;_=\-\#\?\
          /\&a-zA-Z0-9\.]*(.gif|.jpg))§'
          ;
                        
          $code "http://\\3 ";
                        
          $bild preg_replace($hack,$code,$line[$i]);
                      
          $bild trim($bild);

                      
                      echo 
          $bild;
                        
          $size getimagesize("$bild");
                         
          $height $size[1];
                         
          $width $size[0];

                     if (
          $height 15)
                    {
                         
          $height 15;
                         
          $percent = ($size[1] / $height);
                         
          $width = ($size[0] / $percent);
                    }
                   else if (
          $width 50)
                   {
                         
          $width 50;
                         
          $percent = ($size[0] / $width);
                         
          $height = ($size[1] / $percent);
                   } 
          Ich schau also vorher nach ob eine URL gif etc. enthält, klappt auch bei einem Bild sehr gut. Wenn aber zwei oder mehr Bilder im Satz enthalten sind bekomme ich alle URLs hintereinander angezeigt und somit ist ermitteln der Bildgröße nicht mehr möglich.

          Hat jemand eine bessere Lösung ? Kann ich evtl. irgendwo anders die größe des Bildes herbekommen ?
          Zuletzt geändert von Mundgeruch; 03.09.2005, 18:44.

          Kommentar


          • #6
            guck dir man den Pattern Modifier e an!

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Hallöchen,

              habe ich aber was soll das bedeuten ?

              e Evaluierung von Backreferences oder Substitutionen als PHP-Code (nur in preg_replace verwendbar)



              Nachtrag: Habe etwas gefunden was mir ggf. weiterhelfen könnte.

              habe ich in einem Tutorial gefunden:
              Beispielzeichenkette "foosibar":
              <?php
              $ergebnis=preg_replace("/(foo)(.*?)(bar)/e", "'\\1'.strtoupper('\\2').'\\3'", "foosibar");
              echo $ergebnis;
              ?>
              Das Ergebnis lautet: "fooSIbar" (Ja, ich weiß schon: kein sehr sinnvolles Beispiel *g* Ich hoffe, man versteht trotzdem, was "e" macht).

              Wenn ich nachher endlich Feierabend habe und nicht weiterkomme nerv ich einfach mal weiter
              Zuletzt geändert von Mundgeruch; 03.09.2005, 13:00.

              Kommentar


              • #8
                und brich den Code um!

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Joh schon passiert ...

                  Naja bin nun seid 2 Stunden zuhause und tüftel mit diesem /e herum aber es passiert nichts ?

                  PHP-Code:
                  $hack '§(?<!(\]|=|"|>))([url]http://[/url])([;_=\-\#\?\
                  /\&a-zA-Z0-9\.]*
                  (.gif|.jpg)/e)§'
                  ;
                  // Meiner Meinung nach müsste ich hier die größe des Bildes ermittelt werden ?
                  $code "<img src=\"http://\\3\" width=\"$width\" height=\"$height\">";
                  $line[$i] = preg_replace($hack,$code,$line[$i]); 
                  Hat jemand irgendeine idee wie ich das Problem lösen könnte ?
                  Zuletzt geändert von Mundgeruch; 03.09.2005, 18:42.

                  Kommentar


                  • #10
                    Original geschrieben von Mundgeruch
                    Joh schon passiert ...
                    wo, ich hab immernoch einen Scrollbalken >_>


                    du hast nix verstanden, oder?

                    PHP-Code:
                    $hack '§(?<!(\]|=|"|>))([url]http://[/url])([;_=\-\#\?\/\
                    &a-zA-Z0-9\.]*(.gif|.jpg)/e)§'
                    ;
                    $code "deine_function('//3')";
                    $line[$i] = preg_replace($hack,$code,$line[$i]); 
                    und dann schreibst du dir einen Funktion allá
                    PHP-Code:
                    function deine_function($param)
                    {
                     echo 
                    '<pre>' print_r($paramtrue) . '</pre>';

                    und guckst weiter!

                    [edit] außerdem funktioniert der Delimiter überhaupt? AFAIK dürfte der an der Stelle platziert nicht funktionieren OO
                    Zuletzt geändert von ghostgambler; 03.09.2005, 17:08.

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      wo, ich hab immernoch einen Scrollbalken >_>
                      Ups naja liegt sicherlich am 21 Zoll ....

                      du hast nix verstanden, oder?
                      Nicht wirklich aber da du ja nun so "freundlich" warst habe ich es einigermaßen verstanden!

                      Kam nicht auf die idee dort irgendwie eine funktion miteinzubauen da ich kaum etwas mit regex zu tun hatte. Ich habe erst seit 1 Tag etwas damit zu tun und das Thema scheint so komplex zu sein das es sogar ganze Bücher und Kurse dazu gibt.



                      [edit] außerdem funktioniert der Delimiter überhaupt? AFAIK dürfte der an der Stelle platziert nicht funktionieren OO
                      Owei ich habe mal bei google versucht etwas über Delimiter zu finden und denke mal du meinst /e

                      Da ich nicht wirklich viel darüber weiss und man über dieses /e auch nicht viel infos findet weiss ich nichtmal ob das so funktioniert. Also geh ich mal davon aus das du mit deiner Aussage nicht unrecht haben wirst.

                      Kommentar


                      • #12
                        omg, liest ein Tutorial über regex!
                        das Pattern muss mit von einem Delimitert umschlossen werden, das dürfte in deinem Falle § sein.
                        §Pattern§
                        und dahinter kommt der Pattern Modifier
                        §Pattern§e


                        Ups naja liegt sicherlich am 21 Zoll ....
                        würdest du es bitte beim Nächsten Thread auf 1024 passend machen! (so wie es in den Forenregeln steht...)

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar


                        • #13
                          Guten Morgen ghostgambler,
                          ich sitze schon seit mehreren Stunden an dem Problem und habe mir viele Foren angeschaut. Aber ich komme einfach nicht weiter ....

                          omg, liest ein Tutorial über regex!
                          Kleinigkeiten bekomme ich mit regex mitlerweile hin, aber irgendwie ist es im moment zu kompliziert. Mal davon abgesehen das man in 1 Tag kein Profi wird. Vielleicht meine ich einfach nur das es zu schwer ist ich habe einfach keine ahnung.

                          Ich habe zumindest das e angefügt und könnte mir vorstellen das es so ähnlich klappen müsste.


                          PHP-Code:
                          $line "http://www.bla.de/bilder/index_04.gif";
                          $hack '§(?<!(\]|=|"|>))([url]http://[/url])([;_=\-\#\?\
                          /\&a-zA-Z0-9\.]*(.gif|.jpg|.bmp|.tif|.png|.swf))§e'
                          ;
                                        
                          $code "bildgroesse('//3')";
                                        
                          $line preg_replace($hack,$code,$line);

                                      
                          function 
                          bildgroesse($param)
                          {
                          echo 
                          '<pre>' print_r($paramtrue) . '</pre>';


                                        
                          $size getimagesize("$param");
                                         
                          $height $size[1];
                                         
                          $width $size[0];

                                     if (
                          $height 15)
                                    {
                                         
                          $height 15;
                                         
                          $percent = ($size[1] / $height);
                                         
                          $width = ($size[0] / $percent);
                                    }
                                   else if (
                          $width 50)
                                   {
                                         
                          $width 50;
                                         
                          $percent = ($size[0] / $width);
                                         
                          $height = ($size[1] / $percent);
                                   }
                                   
                          $code "<src img=\"$param\" width=\"$width\" height=\"$height\">";

                          Ich bekomme nun irgendwie als Ausgabe //3
                          Zuletzt geändert von Mundgeruch; 04.09.2005, 00:59.

                          Kommentar


                          • #14
                            PHP-Code:
                            $line 'http://www.bla.de/bilder/index_04.gif';
                            $hack '§(?<!(\]|=|"|>))([url]http://[/url])([;_=\-\#\?\
                             /\&a-zA-Z0-9\.]*(.gif|.jpg|.bmp|.tif|.png|.swf))§e'
                            ;
                            $code "bildgroesse('\\\\3')"// hier waren die falschen Slashes >_>
                            $line preg_replace($hack,$code,$line);

                            function 
                            bildgroesse($param)
                            {
                             
                            // so
                             
                            $size getimagesize($param);
                             
                            // nicht so $size = getimagesize("$param"); *graus*
                             
                            $height $size[1];
                             
                            $width $size[0];
                             
                             if (
                            $height 15)
                             {
                              
                            $height 15;
                              
                            $percent = ($size[1] / $height);
                              
                            $width = ($size[0] / $percent);
                             }
                             else if (
                            $width 50)
                             {
                              
                            $width 50;
                              
                            $percent = ($size[0] / $width);
                              
                            $height = ($size[1] / $percent);
                             }
                             return = 
                            '<src img="' $param '" width="' $width '" height="' $height '">';


                            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                            Wie man Fragen richtig stellt

                            Kommentar


                            • #15
                              Guten Morgen,
                              [edit]
                              hatte vorhin noch einen kleinen fehler Klappt aber nun wirklich einwandfrei. Danke für deine Mühe die du dir gemacht hast denke ich habe sicherlich wieder etwas dazu gelernt.
                              Zuletzt geändert von Mundgeruch; 04.09.2005, 09:19.

                              Kommentar

                              Lädt...
                              X