Chris (C): preg_match_all, <img ??? src="xxx" ???>

Hallo liebe Selferinnen und Selferaußen,

ich habe mich den ganzen Tag abgemüht, eine möglichsta vernünftige Lösung für das Aufspüren von <img>-Tags bzw. der darin enthaltenen src zu finden. Nach verschiedensten Vorlagen und mit viel Probieren *äh* Überlegen meine ich natürlich, ist eine "Lösung" herausgekommen.

<!-- snip here -->

<?php  #### related001.php ####

$src1 = "smiley.bmp";
$src2 = "SmileyAtNight.bmp";
$src4 = "SmileyAtNight4.bmp";
$html =

"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <HTML>
  <HEAD>
  <TITLE></TITLE>
  <META NAME="Generator" CONTENT="TextPad 4.4">
  <META NAME="Author" CONTENT="?">
  <META NAME="Keywords" CONTENT="?">
  <META NAME="Description" CONTENT="?">
  </HEAD>

<BODY BGCOLOR="aliceblue" TEXT="#000000">

<TABLE ALIGN="left" BORDER=0 CELLSPACING=2 CELLPADDING=8 WIDTH="650px">
    <TR ALIGN="left" VALIGN="middle"></TR>

<TR ALIGN="left" VALIGN="middle">
      <TD><img src="$src1"> </TD>
      <TD> Beispieltext, der hier nur steht damit es nach was aussieht !!!!!</TD>
    </TR>

<TR ALIGN="left" VALIGN="middle">
      <TD></TD>
      <TD> Beispieltext, der hier nur steht damit es nach was aussieht !!!!!</TD>
    </TR>

<TR ALIGN="left" VALIGN="middle">
      <TD> Beispieltext, der hier nur steht damit es nach was aussieht !!!!!</TD>
      <TD><img src="$src2"> </TD>
    </TR>

<TR ALIGN="left" VALIGN="middle">
      <TD> Beispieltext, der hier nur steht damit es nach was aussieht !!!!!</TD>
      <TD><img src="$src2" width="50px"> </TD>
    </TR>

<TR ALIGN="left" VALIGN="middle">
      <TD> Beispieltext, der hier nur steht damit es nach was aussieht !!!!!</TD>
      <TD><img src='$src4' width="50px"> </TD>
    </TR>

</TABLE>

</BODY>
  </HTML>";

#echo "$html";

################## Beginn der relevanten Zeile ###############
preg_match_all ("/<img[^>]+(src="([^"<>']+)"|src='([^"<>']+)')[^<>]*>/", $html, $out, PREG_PATTERN_ORDER);
################## Ende der relevanten Zeile #################

echo "<pre>";
print_r ($out);
echo "</pre>";

?>

<!-- snap and copy/paste here -->

Kann man das etwas eleganter machen? Wir haben in unseren html-Dateien die src immer in Häkchen. Manchmal in einfachen und manchmal in doppelten eben. Ich hätte nun möglichst gerne eine Lösung, die beide Fälle (einfache und doppelte Häkchen) verträgt und das Ergebnis möglichst in EINEM Array liefert.

Wir müssen unsere Websites per eMail verschicken, so dass sie offline lesbar sind. Im Prinzip müssten da wohl sogar alle Sources gesucht, base64-encoded und als related multipart verpackt werden.

Gibts da eine bessere Lösung die relativ sicher, also meistens, funktioniert?

Liebe Grüße

Chris (C)

  1. Hi,

    preg_match_all ("/<img[^>]+(src="([^"<>']+)"|src='([^"<>']+)')[^<>]*>/", $html, $out, PREG_PATTERN_ORDER);

    Kann man das etwas eleganter machen?

    wie, _noch_ eleganter? ;-)

    Du könntest src=(["'])... suchen und das Ergebnis dieser Klammer nach der URI back-referenzieren.

    Wir haben in unseren html-Dateien die src immer in Häkchen.

    Sinnvoll, weil fast immer notwendig.

    Manchmal in einfachen und manchmal in doppelten eben.

    Nicht sinnvoll, weil inkonsequent.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      preg_match_all ("/<img[^>]+(src="([^"<>']+)"|src='([^"<>']+)')[^<>]*>/", $html, $out, PREG_PATTERN_ORDER);

      Kann man das etwas eleganter machen?

      wie, _noch_ eleganter? ;-)

      Du könntest src=(["'])... suchen und das Ergebnis dieser Klammer nach der URI back-referenzieren.

      Wie geht das? Ich verzweifele an den Regulars.

      Wir haben in unseren html-Dateien die src immer in Häkchen.

      Sinnvoll, weil fast immer notwendig.

      Manchmal in einfachen und manchmal in doppelten eben.

      Nicht sinnvoll, weil inkonsequent.

      Jein, das liegt an der Schachtelung, und wann die Scripte eben entstanden sind. Ich bin schon froh, dass ich inzwischen fast alle auf register_globals=off umgestellt habe. Ist bei der mangelnden Doku der ersten Tage wirklich eine Arbeit für Gemütsmenschen *puh-schweiß abwisch*

      LG

      Chris (C)

      1. Hi,

        Du könntest src=(["'])... suchen und das Ergebnis dieser Klammer nach der URI back-referenzieren.

        Wie geht das?

        komisch, ich wurde in der PHP-Doku schon auf der ersten Seite in den User-Kommentaren fündig. Du nicht?

        Ich verzweifele an den Regulars.

        An den Regulars dieses Forums? ;-)

        Manchmal in einfachen und manchmal in doppelten eben.
        Nicht sinnvoll, weil inkonsequent.
        Jein, das liegt an der Schachtelung,

        Es existiert keine Abhängigkeit oder Einschränkung.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes