gudn tach!
ich nutze eine regex zum Filtern von Bildpfaden in HtmlTags
preg_match("@<img.*?src\s*=\s*'"['"].*?>@i",$inhalt,$pic);
[...]
Wenn diese Anführungszeichen (src=) fehlen, gehts nicht.
Bsp. <img scr=media/bild.jpg...
preg_match("@<img\s.*?src\s*=\s*(?:(['\"])(.*?)\1|([^ '\"]\S+?)).*?>@i", $inhalt, $pic);
so in etwa.
\1 ist eine "backreference" (siehe php-manual).
- (wäre noch besser) Frage : Kennt jemand eine Funktionen die Bilder
insgesamt aus allen Texten, auch wenn sie nicht in einem hrml tag
stehen rausfiltern kann ?
definiere "bild". ist das alles was auf ".jpg", ".png", ".gif" und ".svg" endet (das sind noch lange nicht alle)?
dann bastele einen ausdruck, der das sucht. also in etwa:
/\b(\S+.(?:jpg|png|gif|svg))\b/
der hat allerdings noch einige makel, wuerde z.b. auch
"img=irgendwas.jpg", aber nicht "../dings.jpg" matchen. also waere es besser, wenn du gleichheitszeichen ausschliessen koenntest und punkte am anfang zulaesst.
Jetzt das ganz gemeine der bildpfad ohne leerzeichen direkt
an diesem text:sonnenschein.jpg
heisst das bild "text:sonnenschein.jpg" oder "sonnenschein.jpg"?
falls doppelpunkte nicht vorkommen duerfen, kannst du entsprechend den ausdruck abaendern.
/((?:\bhttp://|.{0,2}/)?\b[^\s:=]+.(?:jpg|png|gif|svg))\b/
und auch da kann bestimmt noch irgendwas schiefgehen.
wichtig ist also, dass du dir zunaechst genau ueberlegst, welche formen von dateinamen vorkommen koennen.
prost
seth