Die Dateitypen kann er ja noch erweitern, ggf. abändern in
[A-Za-z{3,4}], was zwar weniger genau und restriktiv ist, aber evtl. weniger Wartung bedeutet. Eventuell noch ein i als Modifikator dranhängen, falls diese auch noch unterschiedlich geschrieben werden.
Wenn im Dateinamen ein {IMG:} mit drin steckt, interessiert das den Regexp überhaupt nicht.
Ausgabe von obigem Script:
Code:
<img src="bild_urlaub_1.jpg">
<img src="small_junior_1year.jpg">
<img src="hans_klein.png">
<img src="{IMG:blabla.jpg}.png">
Das Script von oben würde alles zerpflücken.
Code:
$string = '{IMG:bild_urlaub_1.jpg}
{IMG:small_junior_1year.jpg}
{IMG:hans_klein.png}
{IMG:{IMG:blabla.jpg}.png}';
$filenames = array();
$lines = explode("{", $string);
foreach ($lines as $line) {
$filenames[] = str_replace(array('IMG:', '}'), '', $line);
}
var_dump($filenames);
Code:
array(6) {
[0]=>
string(0) ""
[1]=>
string(19) "bild_urlaub_1.jpg
"
[2]=>
string(24) "small_junior_1year.jpg
"
[3]=>
string(16) "hans_klein.png
"
[4]=>
string(0) ""
[5]=>
string(14) "blabla.jpg.png"
}
Dein Script würde auch daran scheitern:
Code:
<img src="bild_urlaub_1.jpg">
<img src="small_junior_1year.jpg">
<img src="hans_klein.png">
<img src="<img src="blabla.jpg">.png">
Speziell bei variablen Sachen wie einer Einbindung von Dateinamen, welche gefiltert werden müssen, würde ich nie und nimmer starre Folgen nutzen. Eine Ausnahme wäre Zeichenbegrenzer zu nutzen, welche in keinem Dateisystem erlaubt sind (fällt schon schwerer diese zu finden, mir fällt da spontan nur der Doppelpunkt ein). Nur hat es sich dann mit der Usuability ein wenig schräg, wenn ich
:IMG:dateiname.jpg: als Formatierung nutze. Mag zwar auch seine Vorteile haben, ergibt für mich aber genau null Sinn.