Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kasowanie rozszerzenia
Forum PHP.pl > Forum > PHP
juniors
czy moze ktoś wie jak podczas podbierania nazywy plików z katalogu usunąc rozszerzenie?
KaMeLeOn
1. To już było... Następnym razem proszę korzystać z wyszukiwarki.
2. Przydatna będzie funkcja [manual:561d2bc924]explode()[/manual:561d2bc924].
nobody
Samo explode bedzie dobre, ale zalozmy ze nazwa pliku ma kilka kropek i dopiero na koncu jest rozszerzenie? Wpadlem na takie cos:
[php:1:7dfd19799a]<?php
$plik="dup.aja.si.a.bmp";
//odnajduje ostatnie wystapienie kropki
$roz=strrchr($plik,".");
//dzieli nazwe pliku na tablice gdzie separatorem jest rozszerzenie
$nazwa=explode("$roz",$plik);
//wyswietlenie nazwy pliku
print "Nazwa pliku: $plik, rozszerzenie: $roz, nazwa podstawowa: ".$nazwa[0];
?>[/php:1:7dfd19799a]
A moze poprostu jest jakas wbudowana funkcja do tego?
Pozdro.
Wankster
[php:1:be3b1fe5da]<pre><?php

/**
* Miracle Renamer System 0.0.0.1 ALPHA
* Katalog, w ktorym sa pliki musi miec uprawniania 0777
**/

#sciezka do plikow, musi konczyc sie znakiem: /
$path = $_SERVER['DOCUMENT_ROOT'] . '/szablon.com/';

#rozszerzenia, ktore nalezy wziasc pod uwage winksmiley.jpg
$exts = array(
'html', 'htm', 'rar', 'tar.gz', 'zip', 'php', 'php3', 'm', 'css'
);

$exts = implode( '|', $exts );
$rexp = '/(.+?).(' . $exts . ')/i';

$handle = dir( $path );

$handle->read();
$handle->read();

$files = array();

while ( FALSE !== ( $file = $handle->read() ) )
{
if ( !( is_dir( $path . $file ) ) )
{
$files[] = $file;
}
}

foreach ( $files AS $key => $value )
{
preg_match( $rexp, $value, $matches );

print rename( $path . $value, $path . $matches[1] ) . "n";
}

?></pre>[/php:1:be3b1fe5da]
KaMeLeOn
[php:1:e3b86a5d3d]<?php
// ...
foreach ( $files AS $key => $value )
{
preg_match( $rexp, $value, $matches );
print rename( $path . $value, $path . $matches[1] ) . "n";
}
?>[/php:1:e3b86a5d3d]
preg_match() w pętli - tragedia...
Chyba że chcesz zażynać serwer... :?

Ja proponuje tak:
[php:1:e3b86a5d3d]<?php
$dir = './';
if( $handle = opendir($dir) )
{
while( false !== ( $file = readdir($handle) ) )
{
if($file != "." && $file != "..")
{
if( is_file($file) )
{
$tab = @explode('.', $file);
if( count($tab) > 1 )
{
$ext = array_pop($tab);
$filename = @implode('.', $tab);
echo 'Nazwa pliku: <b>' . $filename . '</b>, rozszerzenie: <b>' . $ext . "</b><br />rn";
}
else
{
echo 'Nazwa pliku: <b>' . $file . "</b><br />rn";
}
}
}
}
closedir($handle);
}
?>[/php:1:e3b86a5d3d]
spenalzo
A nie krócej?
[php:1:29b459f371]<?php
$plik="plik.z.wieloma.kropkami.w.nazwie.html";
$tmp=explode(".",$plik);
echo $tmp[count($tmp)-1];
?>[/php:1:29b459f371]
rachwal
Cytat
A nie krócej?
[php:1:b403fa90d8]<?php
$plik="plik.z.wieloma.kropkami.w.nazwie.html";
$tmp=explode(".",$plik);
echo $tmp[count($tmp)-1];
?>[/php:1:b403fa90d8]


Twoj kod wyswietli rozszerzenie -- o to chyba autorowi pytania i kodu nie biega tongue.gif
spenalzo
Cytat
Twoj kod wyswietli rozszerzenie -- o to chyba autorowi pytania i kodu nie biega tongue.gif

Ech... :-) Tak to jest jak zaczybna się pisać bez porannej kawy...

To poprawny kod jest taki:
[php:1:87bb2933d4]<?php
$plik="plik.z.wieloma.kropkami.w.nazwie.html";
$tmp=explode(".",$plik);
unset($tmp[count($tmp)-1]);
$nazwa=implode(".",$tmp);
?>[/php:1:87bb2933d4]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.