felixik
(felixik)
15 Czerwiec 2012 04:04
#1
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ę
drobok
(Drobok)
15 Czerwiec 2012 06:58
#2
Wydaje mi się, że nie odróżniasz tablicy od stringa i w tym twój problem
slepciu
(slepciu)
15 Czerwiec 2012 08:06
#3
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)
Grzesie1k
(Grzesie K)
15 Czerwiec 2012 08:19
#4
$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
177
(Copycona)
15 Czerwiec 2012 09:06
#5
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();
felixik
(felixik)
16 Czerwiec 2012 05:20
#6
Dziękuję wszystkim. Oto właśnie chodziło
M11
(master)
18 Czerwiec 2012 14:42
#7
Twój za to nie uwzględnia tego że w nazwie pliku może też być kropka
Grzesie1k
(Grzesie K)
18 Czerwiec 2012 19:29
#8
Sprawdziłeś? Chyba nie- lub źle przeczytałeś. Zobacz różnice pomiędzy strpos() a strrpos() .
M11
(master)
18 Czerwiec 2012 19:32
#9
Zwracam honor, nie zauważyłem tego extra “r”