Intereting Posts

PHP: имя файла без расширения файла – лучший способ?

Я пытаюсь вытащить имя файла из каталога без расширения.

Я прокладываю себе путь со следующим:

foreach ($allowed_files as $filename) { $link_filename = substr(basename($filename), 4, strrpos(basename($filename), '.')); $src_filename = substr($link_filename, 0, strrpos($link_filename) - 4); echo $src_filename; } 

… Но это не сработает, если длина строки расширения больше 3. Я просмотрел документы PHP безрезультатно.

У PHP есть удобная pathinfo() , которая работает для вас здесь:

 foreach ($allowed_files as $filename) { echo pathinfo($filename, PATHINFO_FILENAME); } 

Пример:

 $files = array( 'somefile.txt', 'anotherfile.pdf', '/with/path/hello.properties', ); foreach ($files as $file) { $name = pathinfo($file, PATHINFO_FILENAME); echo "$file => $name\n"; } 

Вывод:

 somefile.txt => somefile anotherfile.pdf => anotherfile /with/path/hello.properties => hello 

попробуй это

 function file_extension($filename){ $x = explode('.', $filename); $ext=end($x); $filenameSansExt=str_replace('.'.$ext,"",$filename); return array( "filename"=>$filenameSansExt, "extension"=>'.'.$ext, "extension_undotted"=>$ext ); } 

Применение:

 $filenames=array("file1.php","file2.inc.php","file3..qwe.e-rt.jpg"); foreach($filenames as $filename){ print_r(file_extension($filename)); echo "\n------\n"; } 

вывод

 Array ( [filename] => file1 [extension] => .php [extension_undotted] => php ) ------ Array ( [filename] => file2.inc [extension] => .php [extension_undotted] => php ) ------ Array ( [filename] => file3..qwe.e-rt [extension] => .jpg [extension_undotted] => jpg ) ------ 

list ($ file) = explode ('.', $ filename);

Попробуй это:

 $noExt = preg_replace("/\\.[^.]*$/", "", $filename); 

Редактировать в ответ на комментарий cletus:
Вы можете изменить его одним из нескольких способов:

 $noExt = preg_replace("/\\.[^.]*$/", "", basename($filename)); // or $noExt = preg_replace("/\\.[^.\\\\\\/]*$/", "", $filename); 

Да, PHP нуждается в регулярных выражениях …