[PHP] zmiana nazwy pliku będącego w tablicy

Witam, mam następujący problem otóż chodzi o to, iż chcę usunąć rozszerzenie pliku, ale właśnie nazwy plików są w tablicy i to sprawia, że nie bardzo wiem jak się za to zabrać. Próbowałem np tak:

$tab = explode('.', $files);

for($i=0; $i<=count($tab)-2; $i++){

$nazwa .= $tab[$i];

$e = substr($nazwa, 0, -4);

niestety bez rezultatu. Jakieś wskazówki?

Z góry dziękuję

Wydaje mi się, że nie odróżniasz tablicy od stringa i w tym twój problem :slight_smile:

Zakładając, że nazwy plików są rzeczywiście w tablicy:

$files=array("aaa.jpg","bbb.png","ccc.bmp","ddd.gif");//tutaj tworze sobie przykladowa tablice$name=array();foreach ($files as $f)
$tab=array('tekst.txt','obraz.jpg','strona.html');

foreach($tab as $file)

{

	$name=substr($file,0,strrpos($file,'.'));

	echo $file.' => '.$name.'
';

}

Ps. Kolega wyżej mnie wyprzedził ale nie uwzględnił iż rozszerzenie pliku nie zawsze ma 3 znaki :slight_smile:

http://webhosting.pl/Solidny.zbior.tipsow.do.PHP slajdy 20-23.

http://php.net/manual/pl/function.pathinfo.php

<?php= array('aaa.jpg', 'bbb.png', 'ccc.bmp', 'ddd.gif');$names = array(); for($i = 0, $c = count($files); $i  $c; $i++) {    $names[] = pathinfo($files[$i], PATHINFO_FILENAME);    echo '[', $files[$i], '] = [', $names[$i], ']', PHP_EOL;[/code] 
[quote]
[aaa.jpg] = [aaa]
[bbb.png] = [bbb]
[ccc.bmp] = [ccc]
[ddd.gif] = [ddd]
[/quote]


Jeszcze należy zauważyć, że jeżeli dane wejściowe to ścieżki dla systemu Windows to kod uruchomiony na Linuksie da wynik, który będzie nieprawidłowy. Trzeba zamienić w ciągu separator katalogów.




[code=php]?php= array('aaa.jpg', '/home/177/bbb.png', 'C:\\ccc.bmp', 'kat\\ddd.gif');$names = array(); for($i = 0, $c = count($files); $i  $c; $i++) {    $names[] = pathinfo($files[$i], PATHINFO_FILENAME);    echo '[', $files[$i], '] = [', $names[$i], ']', PHP_EOL; Uruchomione na Linuksie: 
[quote]
[aaa.jpg] = [aaa]
[/home/177/bbb.png] = [bbb]
[C] = [C]
[kat\ddd.gif] = [kat\ddd]
[/quote]
 Uruchomione na Windowsie: [quote]
[aaa.jpg] = [aaa]
[/home/177/bbb.png] = [bbb]
[C] = [ccc]
[kat\ddd.gif] = [ddd]
[/quote]




?php= array('aaa.jpg', '/home/177/bbb.png', 'C:\\ccc.bmp', 'kat\\ddd.gif');$names = array();

Dziękuję wszystkim. Oto właśnie chodziło

Twój za to nie uwzględnia tego że w nazwie pliku może też być kropka :wink:

Sprawdziłeś? Chyba nie- lub źle przeczytałeś. Zobacz różnice pomiędzy strpos() a strrpos().

Zwracam honor, nie zauważyłem tego extra “r” :wink: