[REGEX] HTML-Tag mit Attributen und Werten matchen

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

  • [REGEX] HTML-Tag mit Attributen und Werten matchen

    Bonjour.

    Ich moechte aus einem gegebenen String alle HTML-IMG-tags herausfiltern und dann folgendes damit tun:

    - src="bla" durch etwas anderes ersetzen (Wert wird von Funktion returned)
    - height="xxx" und width="xxx" entfernen
    - alt="bla" und align="blubb" beibehalten
    - A HREF-tag um den IMG schreiben

    Am Ende soll der veraenderte String natuerlich zurueckgegeben werden.

    Mein Ansatz bis jetzt:

    PHP-Code:
    // Alle IMG-tags matchen
    preg_match_all('/<img.+src="(.+)".*>/isU'$strHtml$matches);

    // Ueber $matches iterieren und neuen SRC-String holen,
    // anschliessend neuen SRC-Tag in String ersetzen.
    foreach ($matches[1] AS $img_src) {
        
    $new_img_src getNewSrcString($img_src);
        
    $strHtml str_replace($img_src$new_img_src$strHtml);
    }

    // Nun noch alle WIDTH und HEIGHT-tags ausfiltern,
    // und ALT- sowie ALIGN-tags beibehalten ...
    ...

    // ... und natuerlich VOR dem <img ... ein <a href="bla"... 
    // und DANACH ein </a> einfuegen...
    ... 
    Hat da jemand eine Anregung?

    Merci!

  • #2
    Warum nimmst du denn nicht einen BBCode?
    Wäre meines erachtens viel einfacher.

    Kommentar


    • #3
      Original geschrieben von Spea
      Warum nimmst du denn nicht einen BBCode?
      Wäre meines erachtens viel einfacher.
      Naja ... der String kommt aus einem "WYSIWYG"-Editor (fckeditor); und im fertigen Text sollen dann halt alle eingefuegten Bilder durch ein Thumbnail mit Link auf das Originalbild ersetzt werden ...

      Danke trotzdem fuer den Hinweis, mit http://pear.php.net/package/HTML_BBCodeParser waere das sicher einfacher, ja ;-)

      Kommentar


      • #4
        Naja, du musst ja nicht umbedingt den BBCode Parser von PEAR benutzen.

        Ich z.b. finde folgenden sehr praktisch: http://www.christian-seiler.de/projekte/php/bbcode/

        dieser ist umfangreich, und gut erklärt.

        Was du dann im endeffekt nimmst, bleibt dir überlassen

        mfg

        Kommentar


        • #5
          vielleicht kannst du damit was anfangen:
          PHP-Code:
          preg_match_all("!<img([^>]*[^/])>!si",$text,$match);
          $l explode('" ',$match[1][0]);
          $l implode('"&',$l);
          parse_str($l);
          echo 
          $src;
          echo 
          $width;
          echo 
          $alt;
          ... 
          Kissolino.com

          Kommentar


          • #6
            [REGEX] HTML-Tag mit Attributen und Werten matchen

            Hallo.

            Gibt's hier RegExp-Gurus? *g*
            Ich moechte einen beliebigen HTML-Tag (in meinem Falle hier der <img />-Tag) so aufsplitten, dass ich alle Attribute und Werte erhalte. In dem String koennen mehrere solcher HTML-Tags enthalten sein.

            Mein Ansatz:

            PHP-Code:
            $strHtml '<img height="176" src="/mein/pfad/zum/bild.jpg" width="250" border="0" align="left" />';

            $pattern '|<img ((.*)="(.*)")+ />|iU';
            preg_match_all($pattern$strHtml$matches); 
            Leider erhalte ich aber dadurch in $matches nur Attribut und Wert von 'align', also nur dem letzten Element.

            Gibt es eine Moeglichkeit, den Teil ((.*)="(.*)") so zu definieren, dass er "beliebig oft" vorkommen kann? (Eigentlich dachte ich, das + wuerde das erledigen...)

            Danke fuer Hinweise!

            Kommentar


            • #7
              probier mal so ....
              PHP-Code:
              $pattern '!<img ( (.*?)="(.*?)"){1,} />!is'
              (ohne garantie)
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Original geschrieben von Abraxax
                probier mal so ....
                PHP-Code:
                $pattern '!<img ( (.*?)="(.*?)"){1,} />!is'
                (ohne garantie)
                Hmm, naja, leider nicht ;-) Habe auch schon wie wild herumprobiert und alle moeglichen Kombinationen probiert, werde das wohl anders loesen muessen. HTML-Parser ist zwar etwas Overkill, da ich nur IMG-Tags parsen will, aber naja...

                Danke trotzdem.

                Kommentar


                • #9
                  hast du eigentlich schonmal in dein erstes posting zu diesem thema geschaut?
                  Kissolino.com

                  Kommentar


                  • #10
                    Original geschrieben von Wurzel
                    hast du eigentlich schonmal in dein erstes posting zu diesem thema geschaut?
                    stimmt, er hatte ja schon eins zu dem thema, und auch erst von gestern ... also führen wir mal zusammen.

                    @derjanosch: und du unterlässt bitte zukünftig das doppelposten!
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar

                    Lädt...
                    X