Alternativbild

Ich suche einen Code bzw. einen der mir einen solchen Code macht:

Wenn ein Link nicht die endung .gif,.jpg,.png,.bmp oder der link nicht aufrufbar ist soll ein alternativbild angezeigt werden. (Die Links sind in einer MySQL-DB)

Kann mir jemand helfen?

.htaccess:

RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* /pfad/zur/alternativgrafik.endung
So in etwa könnte das aussehen. Natürlich ungetestet.
Kann natürlich noch auf die von dir genannten Formate eingeschränkt werden.

Nun ja, danke werd ich auch noch gebrauchen. So wie das aussieht ist das für jedes Bild. Ich möchte das aber nur in einer bestimmten Datei und wenn da ein Bild nicht angezeigt werden kann, soll automatisch das ‘src’ im img-element geändert werden.

Da kannst du dann bei jedem Bild mit is_file() arbeiten:
…src="<?php is_file($url) ? echo $url : echo $urlersatzgrafik; ?>"…

OK, Danke, aber wie kann man dann machen, dass es nur .gif,.jpg,.png,.bmp sein dürfen?

Der Apache hat eine Funktion, die sich 'content negotiation’
nennt. Da kann man die Dateinamen ohne Endung in (X)HTML
angeben und browser und server einigen sich dann irgendwie
selbständig, was gesendet wird, gegebenenfalls eben ein auf
dem Apache definiertes Ersatzformat.
Mußt nach dem Stichwort im Handbuch vom Apachen mal suchen,
da sollte das im Detail erkärt sein, wie man das ansteuert.
Kann natürlich auch sein, daß solch ein Modul auf dem
verwendeten server nicht verfügbar ist, das sollte man dann auch
noch in Erfahrung bringen.

Geht natürlich auch:[code]
$ext=pathinfo($url);

…src="<?php (is_file($url) && in_array($ext['extension'],array('jpg','gif','png','bmp'))) ? echo $url : echo $urlersatzgrafik; ?>"…[/code]

[code]
$ext=pathinfo($url);

…src="<?php echo (is_file($url) && in_array($ext['extension'],array('jpg','gif','png','bmp'))) ? $url : $urlersatzgrafik; ?>"…[/code]
geändert
die echos waren an der falschen stelle.

Jetzt wird immer die Ersatzgrafik angezeigt. Die Banner, die ich anzeigen will sind in einer Schleife.
Wofür ist $ext[‘extension’]?

die erste Zeile
$ext = pathinfo($url);
ermittelt informationen über die angegebene URL und gibt sie in ein array zurück.
“extension” ist dabei die Dateiendung. (Mehr Infos)

vielleicht liegts daran, dass die dateiendung großgeschrieben ist, hier mal eine kleine Veränderung (ich hab auch noch ‘jpeg’ hinzugefügt, was als Dateiendung neben ‘jpg’ ebenfalls erlaubt ist).

$ext=pathinfo($url);

...src="<?php echo (is_file($url) && in_array(strtolower($ext['extension']), array('jpg', 'jpeg', 'gif', 'png', 'bmp'))) ? $url : $urlersatzgrafik; ?>"...

Wobei ich gerade sehe, dass die sache mit is_file($url) gar nicht klappen kann, wenn es sich tatsächlich um eine URL handelt…
wo kommt die $url her?
ist das ein absoluter oder relativer Pfad zu einer Datei?

is_file() erwartet nämlich den Dateinamen entweder relativ zum Verzeichnis in dem das php-script ausgeführt wird(!), oder aber absolut mit kompletter dateisystem-pfadangabe.

Der Link ist absolut. $url kommt von einer while-schleife mit 5 einträgen

wie schaut denn so eine url zum Beispiel aus?

z.b.
img3.imagebanana.com/img/35v8lau7/alt.gif

[quote=“radio-welt”]z.b.
img3.imagebanana.com/img/35v8lau7/alt.gif[/quote]

de2.php.net/is_file

Darüber hinaus ist url-access ohnehin nicht erlaubt.

Wenn es NUR darum geht die Dateiendung zu überprüfen, dann kannste das is_file($url) auch einfach entfernen.

[code]$ext=pathinfo($url);

…src="<?php echo (in_array(strtolower($ext['extension']), array('jpg', 'jpeg', 'gif', 'png', 'bmp'))) ? $url : $urlersatzgrafik; ?>"…[/code]

btw: ich würde auch die extension ‘bmp’ nicht erlauben (sind zu groß die dateien)

:hail: Danke! Klappt :sunglasses: