vedere se è un immagine o no

Devo fare un'espressione regolare per controllare se un determinato file è immagine o no in modo  da  includerlo o mostrarlo nei tag immagine ... che espressione regolare devo fare?

avevo pensato a fare così

$patterns = array("   aaaaaa ");

if (ereg($patterns,$file))

{

echo '<img src="'.$path.'" />';

}

else

{

}

logicamente al posto di aaaa devo mettere le pattern per i file accettati ma nn so come fare :(

questa va bene?

[a-zA-Z0-9()]\.[a-zA-Z0-9]

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

un controllo sui mime type o sull'estensione non basta?

risposto 10 anni fa
arjuna
X 0 X

Verifica se il file è jpg:

$image = getimagesize ($file);

if ($image [2] == 2)  true;

in quanto 2 corrisponde al formato jpg

risposto 10 anni fa
arjuna
X 0 X

mi serve fare il controllo sull'estensione

cmq secondo me sarebbe meglio :

$formato = explode('.',$file);

$formato_immagine = array_pop($formato);

if(in_array($formato)){ /*/ ok */} else { /*/ meno ok :) */}

+- così questo nn funzia l'ho fatto in 5 secondi asd

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

con getimagesize puoi ricavare non solo il tipo di file ma anche la dimensione da inserire in <img />

dagli un occhio: http://it2.php.net/manual/it/function.getimagesize.php

risposto 10 anni fa
arjuna
X 0 X

in_array necessita di due parametri

risposto 10 anni fa
arjuna
X 0 X

lo so era uno pseudo codice ...

$formato = explode('.',$file);

$formato_consentito = array('png','gif','jpg','jpeg');

$formato_immagine = array_pop($formato);

if(in_array($formato_immagine,$formato_consentito))

{

echo '<img src="'.$path.'" />';

}

else

{

include($path);

}

/* ok questo funziona */

solo che mi sarebbe interessato farlo con le regex

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

perchè lo volevi fare con le regex?

credo sia più performante usare getimagesize

risposto 10 anni fa
arjuna
X 0 X

[OT]

non mi serve vedere la dimensione ( anche se un fallimento di imgsize varrebbe a dire che nn è un img ) cmq era per puro scopo di imparare visto che mi piace ... programmo dalla mattina alla sera e voglio usare diversi metodi per risolvere i problemi in modo da scegliere sempre quello + adatto alla situazione e + performante . ::)

 :bye:

[/OT]

 :police:

PS ma ci siamo visti sul forum di gamesrulez ??? /PS

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Ecco la mia soluzione:

<?php
$estensioni = array('jpg','jpeg','png','gif');
$nomefile = 'foto.con.nome.complesso.jpg';
$path_parts = pathinfo($nomefile);
if(in_array($path_parts['extension'],$estensioni))
   echo 'Bingo!';
?>

oppure con una espressione regolare:

<?php
$estensioni = array('jpg','jpeg','png','gif');
$nomefile = 'foto.con.nome.complesso.jpg';
if(preg_match('/(jpg|gif|png|gif)$/',$nomefile))
   echo 'Bingo!';
?>

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

e se il file si chiama giffoni.txt?

risposto 10 anni fa
arjuna
X 0 X

in quale caso ?

if(preg_match('/(jpg|gif|png|gif)$/',$nomefile))

qui gli stai già dando un numero ristretto di estensioni adatta ad immagini

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

in entrambe le tecniche che ho suggerito era risolto il problema della finta estensione all'interno del nome del file  ^-^. Infatti il primo esempio usa $path_parts['extension'] che restituisce la vera estensione del file. Nel caso dell'espressione regolare ho usato il carattere $ alla fine che significa che quelle lettere (jpg|gif|png|gif) devono essere alla fine della stringa.

 :coolsmiley:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda