seth: preg_match Bilder finden

Beitrag lesen

gudn tach!

preg_match("@<img\s.*?src\s*=\s*(?:(['\"])(.*?)\1|([^ '\"]\S+?)).*?>@i", $inhalt, $pic);

so in etwa.
\1 ist eine "backreference" (siehe php-manual).

Dein Beispiel funktioniert leider nicht:

hab's nicht ausprobiert. aber bin auch nicht davon ausgegangen, dass &quot; statt " vorkommen koennte.

Zu suchender Beispiel-Text:
$txt=[zensiert]

igitt! das sieht ja ekliger aus als das, was manchmal, wenn man so richtig kraeftig schneuzt, im taschentuch landet.

nun ja, das macht es nicht einfacher. z.b.
http://abc.de/
news/url?sa=T&amp;ct=de/1-0i-0&amp;fd=R&amp;url=http://www.azonline.ch/pages/index.cfm%3Fd
om%3D2%26rub%3D100004699%26nrub%3D0%26sda%3D1%26Artikel_ID%3D101289646&amp;cid=1102936112&a
mp;ei=gXW2ROKMGIuOwQGw_ODTAg

koennte ein bild sein oder auch ein video oder eine html-datei oder sonstwas. allein vom url kann man nicht auf den typ schliessen. theoretisch koennte sich auch hinter http://www.example.org/bild.jpg ein video verbergen und hinter http://www.example.org/text.txt ein mp3-file.
u.a. deswegen schrieb ich, dass du ziemlich genau festlegen/definieren musst, was bild sein soll und was nicht.

Zu den anderen Infos.
Was ich mir vorstelle ist eine Funktion
die die entsprechenden Regexes selbst reguliert.

das ist je nach umfang gar kein soo leichtes unterfangen.

Somit kann ein trenner als auch die bildformate einzeln bestimmt werden. Komme aber leider nicht weiter, mangels REGEX Verständniss.

nur mal so nebenbei: worte mit der "phonetischen" endung "-niss" werden im deutschen grundsaetzlich "-nis" geschrieben. beim plural wird das s dann allerdings verdoppelt.
warum das so ist, weiss ich auch nicht. haette ich was zu sagen gehabt, waere diese regel wohl den krododilen zum frass vorgeworfen worden.

zum regexp-verstaendnis empfehle ich die weblinks der wikipedia:
http://de.wikipedia.org/wiki/Regexp#Weblinks

function finde_bilder($text, $endungen, $nicht_davor){
// ...
}

die beschreibung sollte genauer sein.
mit welchen zeichen(folgen) kann ein dateiname beginnen?
mit welchen zeichen(folgen) kann ein dateiname aufhoeren?
welche zeichen koennen ueberhaupt im dateinamen vorkommen?
was kann alles davor und was kann danach stehen?

fuer eine halbwegs flexible funktion, wie du es dir vorstellst, wird man vermutlich einige halbe stunden benoetigen (deswegen kann ich dir auf die schnelle keine fertige loesung bieten/basteln).

wenn du beispielsweise weisst, dass bilder immer mit "http://" anfangen und ".jpg" aufhoeren und dass dazwischen weder leerzeichen noch die zeichenfolgen "http://" oder ".jpg" im namen enthalten sein koennen, dann sollte sowas gehen wie
  /(/bhttp://[^ ]+?.jpg/b)/
(das waere der erste parameter von preg_match)

auf diese art kannst du auch mehrere regexp bauen und die nacheinander abklappern.

prost
seth