Ankündigung

Einklappen
Keine Ankündigung bisher.

gesucht: regexp, der img-tags erkennen kann.

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • gesucht: regexp, der img-tags erkennen kann.

    moin moin,

    ich brauche einen regulären ausdruck, der aus einem string, der HTML enthält, den ersten <IMG> tag herausfiltert, bzw. die URL des bildes im ersten IMG tag.

    sollte mit
    Code:
    [img]blib.jpg[/img]
    < img height=100 width=100 src="blub.jpg">
    [img]blub.jpg[/img]
    und so weiter funktionieren.

    hat da jemand einen fertigen?

    gruesse
    murdoc

  • #2
    8.8. Wie finde ich alle Links in einer HTML-Datei?
    http://faq-phpfriend.de/q/q-regexp-links-finden.html

    Kommentar


    • #3
      Kein eigener Lösungsvorschlag? Sehr fortgeschritten
      (Thread verschoben)

      Kommentar


      • #4
        Hallo,

        wenn ich Dich richtig verstanden habe, kannste das ganz einfach mit strip_tags()
        machen, aber erst seit PHP xxx ist das allowable Tags möglich.
        oder man benutzt gleich beim einlesen fgetss()
        der string besteht dann nur auch img-tags, den man mit split("<",$einstring) trennen könnte.
        u.U. funktioniert file_get_contents("datei.html") mit folgendem strip_tags schneller als fgetss()
        Beispiel (ungetestet):
        PHP-Code:
        <?php
        $test
        =file_get_contents("datei.html");
        $test=strip_tags($test,"<img>");
        $test=split("<",$test);// ggf auch $test=split("\<",$test);
        echo $test[0];
        ?>

        Kommentar


        • #5
          strpos könnte auch ein Weg sein, wahrscheinlich sogar der schnellste, weil der Balast am Ende nicht beachtet wird.
          - zuerst nach '<img ' suchen
          - danach nach ' src="' und
          - dann bis zum nächsten " alles einlesen.

          Kommentar


          • #6
            nein, ich habe mich vielleicht etwas unklar ausgedrückt.
            der string enthält freien html inhalt, in dem irgendwann ein bild, bzw. img tag kommen kann, aber nicht muss.

            der reguläre ausdruck sollte mir sozusagen aus dem ersten img tag, der im string vorkommt, die image-url ausfiltern.

            Kommentar


            • #7
              aus dem ersten img tag, der im string vorkommt
              hmmm, preg_match() und sowas wie : '#img.+src=(\'|\"| )?(.+)(\1)#isU'

              Kommentar


              • #8
                Also die Frage habe ich auch so verstanden. Haben dir unsere Antworten denn überhaupt nicht geholfen?

                Kommentar


                • #9
                  also soll bei deinem Beispiel im ersten Post, am Schluss 'blib.jpg' rauskommen ?!

                  du schreibst «ich suche» mach das im Gesuche.. oder sonst schreib deine Sätze anderst..

                  Kommentar


                  • #10
                    Naja wir wollen ja keine Haare spalten Hier sucht ja jeder nach der Lösung seines Problems...

                    Kommentar


                    • #11
                      okey, meine Frage bleibt trotzdem

                      also soll bei deinem Beispiel im ersten Post, am Schluss 'blib.jpg' rauskommen ?!

                      Kommentar


                      • #12
                        PHP-Code:
                        <?php
                        echo preg_match("/blib.jpg/i",fgetss("datei.html"));


                        ?>
                        Raten macht Spass
                        aber wir könnten vermutlich noch 100 Posts setzen und alle nur denkbaren Möglichkeiten durchspielen bis zum kompletten SPL oder ML-Parser


                        dabei kann man aber nicht PHP verwenden um Seiten auszuspionieren
                        das wäre dann böse

                        Kommentar


                        • #13
                          Also für mich ist die "Aufgabenstellung" klar.
                          Jetzt muss der Threadstarter eigentlich nurnoch sagen ob er mit den Antworten vorangekommen ist.

                          Kommentar


                          • #14
                            aber wir könnten vermutlich noch 100 Posts setzen
                            Blos nicht, wird schon genug überflüssiges Zeug hier abgelassen ...
                            Einfach auf die Antwort vom OP warten ...

                            Kommentar


                            • #15
                              Guten Morgen,

                              wer oder was ist OP ?

                              aber da mir die Sache einen Riesenspass gemacht hat, habe ich anstatt der Glotze eine Reihe von Tests gemacht

                              die Datei bildertest.html ist 50 kB gross und hat alle möglichen Tags, CSS, JavaScript und form-tags,
                              hier nun meine Lösung die bei mir um 457 Mikrosekunden als schnellte Zeit benötigt,
                              die Zeit schwankt allerdings, je nach Auslastung des Servers bis 16576 Mikrosekunden:

                              PHP-Code:
                              <?php

                              $start
                              =gettimeofday();
                              $startm=microtime();
                              $datei=fopen("bildertest.html","r+");
                              while(
                              $zeile fread($datei,255)){
                              if(
                              preg_match("/<img/i",$zeile)){break;}
                              }
                              fclose($datei);
                              $zeile=split("\<",$zeile);
                              foreach(
                              $zeile as $ergebnis){

                              if(
                              preg_match("/img/i",$ergebnis)){ $test=$ergebnis;break;}

                              }
                              $test=split(" ",$test);
                              foreach(
                              $test as $ergebnis){
                              if(
                              preg_match("/src/i",$ergebnis)){ $testa=str_replace(">",";",$ergebnis);break;}

                              }
                              $testa=str_replace("<","",$testa);

                              @eval(
                              "\$".$testa); // :mrgreen:
                              $ende=gettimeofday();
                              $endem=microtime();

                              $zeit=($ende[sec]+$ende[usec])-($start[sec]+$start[usec]);
                              $zeitm=$endem-$startm;
                              if(isset(
                              $src)){
                              echo 
                              $src." gefunden in ".$zeit." Mikrosekunden = ".$zeitm." Sekunden";}
                              else{ echo 
                              "das war ein kalter, nichts gefunden in ".$zeit." Mikrosekunden = ".$zeitm." Sekunden";}



                              ?>
                              ist ein Witz, aber das ist die schnellste Variante...

                              Kommentar

                              Lädt...
                              X