Newsgroup: it.comp.www.php
Titolo: Come togliere .jpg alla fine di un nome di file?

Salve al ng.
Come da oggetto ho un array con tutti nome di immagini che terminano con
.jpg e volgio toglierlo, come posso fare? Qual'e' il modo piu' performante?
Ciao a tutti e grazie
Danilo

 ha scritto nel messaggio
news:J1118.2347$Qu1....@news2.tin.it...

Ci deve essere qualche altra cosa che non va, su 500 codici (50 sono
presenti nella cartella img) solo uno funziona bene, mi direste se vedete
qualcosa di sbagliato nel codice qui sotto, Grazie:
.......
// Selezione immagini
   $handle = opendir('img');
   $i=1;
   while ($file = readdir($handle)) {
     if ($file != "." && $file != "..") {
       echo $immagini[i]=ereg_replace(".jpg", "", $file);
       $i++;
     }
   }
// Query select
   $query="SELECT * FROM accessori LIMIT $start,$limit";
   $esecuzione=mysql_query($query) or die ("Query");
// Stampa tabella iscritti
   echo "<table border=\"1\" width=\"100%\" align=\"center\">\n";
   echo "\t<tr>\n";
     echo "\t\t<th width=\"10%\">Codice</th>\n";
     echo "\t\t<th width=\"60%\">Descrizione</th>\n";
     echo "\t\t<th width=\"10%\">Prezzo Euro</th>\n";
     echo "\t\t<th width=\"10%\">Prezzo Lire</th>\n";
     echo "\t\t<th width=\"10%\">Immagine</th>\n";
   echo "\t</tr>\n";
 while (list($codice, $descrizione, $prezzoe, $prezzol) =
mysql_fetch_row($esecuzione)) {
   echo "\t<tr>\n";
  if (!$codice) {
     echo "\t\t<td>*********</td>\n";
     echo "\t\t<td><b>$descrizione</b></td>\n";
     echo "\t\t<td>*****</td>\n";
     echo "\t\t<td>*****</td>\n";
     echo "\t\t<td>Cat Img</td>\n";
  }
  else {
     echo "\t\t<td>$codice</td>\n";
     echo "\t\t<td>$descrizione</td>\n";
     echo "\t\t<td>$prezzoe</td>\n";
     echo "\t\t<td>$prezzol</td>\n";
    if (in_array($codice,$immagini)) {
     echo "\t\t<td><a href=\"../img/$codice.jpg\">IMG</a></td>\n";
    }
    else {
     echo "\t\t<td>Cat Img</td>\n";
    }
  }
   echo "\t</tr>\n";
 }
   echo "\t<tr>\n";
..........

 ha scritto nel messaggio
news:J1118.2347$Qu1....@news2.tin.it...


> $immagini[i]=ereg_replace(".jpg", "", $file);
Io lo cambierei in
 $immagini[i]=ereg_replace("/\.jpg$/", "", $file);
vedi se funziona ora!
Ciao,
Irene


Il mio dubbio era se usare o meno ereg_replace o altre funzioni, cmq vorrei
capire perche 'mi funziona solo con una img mi analizzereste quel codice
sopra?
Grazie
P.S.- Comunque ho risolto in un modo meno raffinato
Ciao

In J1118.2347$
Qu1....@news2.tin.it
, Danilo Bottone, 
botto...@tin.it
, il


Se le immagini hanno tutte la stessa estensione ".jpg", un semplice
    $nome_immagine = substr_replace($nome_immagine, "",
strrpos($nome_immagine, "."));
non ti basta?
ciao
_China

 ha scritto nel messaggio
news:G3218.2563$Qu1.1...@news2.tin.it...


    }
$immagini[$i]=ereg_replace(".jpg", "", $file);
__________^ (mancava un $)...
str_replace(".jpg","",$file) non e' sufficiente (pero' occhio a
minuscolo/maiuscolo)?
vedi anche il discorso (giustissimo) di J!
Piccolo trucco: con un print_r($immagini); potevi vedere il problema...
Jurgen

 ha scritto nel messaggio
news:a22868$oph$1...@fe2.cs.interbusiness.it...

Niente penso il problema sia nella funzione in_array dato che mettendo tutti
i nomi in un array fatto cosi': $immagini = array ('dada', 'casa',....);
funziona perettamente.
Altri suggerimenti

 ha scritto nel messaggio
news:B86A7211.73AE%rdicora...@inwind.it...

Ho trovato il problema come suggerito dal "guru ufficiale:)" mancava un $
alla i ecco perche' funzionava solo una immagine e non tutte e 50... cmq ho
provato tutte le soluzioni che mi avete detto anche prima di postare ma
senza la $ (che scemo!) non funzionava proprio....
Ciao e grazie a tutti
Danilo

       echo $immagini[i]=ereg_replace(".jpg", "", $file);
La regexp non va bene: "." vuol dire "qualsiasi", quindi
	bjpgsql.jpg
diventa
	sql
che non e' bello. Dato che dentro non ci sono variabili, meglio
sarebbe usare '\.jpg' anziche' ".jpg". Per sicurezza, '\.jpg$',
cosi' viene fatto un binding a fine parola.
E dato che dopotutto neanche ti serve una (reg)exp, potresti in
questo caso usare
	str_replace($file, '.jpg', '');
oppure mettere tutti i file in un array e chiamare soltanto una
volta
	str_replace($filearray, '.jpg', '');
Quest'ultimo IMHO e' il sistema piu' veloce di tutti :-)
Leonardo