Получить имя файла из пути и преобразовать подчеркивания в пробелы - PullRequest
0 голосов
/ 06 августа 2009

У меня есть массив файлов изображений с относительными путями, например: gallery/painting/some_image_name.jpg. Я передаю этот массив в foreach цикл, который печатает путь в источник <img>.

Какой безопасный надежный способ вывести имя из такой строки?

gallery/painting/some_image_name.jpg> to> имя некоторого изображения

Ответы [ 5 ]

4 голосов
/ 06 августа 2009

basename ($ path, ".jpg") дает some_image_name, тогда вы можете заменить _ пробелом.

str_replace('_', ' ', basename($path, ".jpg"));
1 голос
/ 06 августа 2009
  function ShowFileName($filepath) 
    { 
        preg_match('/[^?]*/', $filepath, $matches); 
        $string = $matches[0]; 
        #split the string by the literal dot in the filename 
        $pattern = preg_split('/\./', $string, -1, PREG_SPLIT_OFFSET_CAPTURE); 
        #get the last dot position 
        $lastdot = $pattern[count($pattern)-1][1]; 
        #now extract the filename using the basename function 
        $filename = basename(substr($string, 0, $lastdot-1)); 
        #return the filename part 
        return $filename; 
    }

Ссылка: http://us2.php.net/basename()

0 голосов
/ 06 августа 2009

Информация о пути и str_replace.

     $path = 'gallery/painting/some_image_name.jpg';
     $r = pathinfo($path, PATHINFO_FILENAME);
     echo str_replace('_', ' '. $r['filename']);
0 голосов
/ 06 августа 2009

Как насчет использования pathinfo для извлечения частей, составляющих имя файла?

Например:

$name = 'gallery/painting/some_image_name.jpg';
$parts = pathinfo($name);
var_dump($parts);

Что вам даст:

array
  'dirname' => string 'gallery/painting' (length=16)
  'basename' => string 'some_image_name.jpg' (length=19)
  'extension' => string 'jpg' (length=3)
  'filename' => string 'some_image_name' (length=15)

И затем вы можете использовать str_replace для замены _ пробелами:

$name2 = str_replace('_', ' ', $parts['filename']);
var_dump($name2);

И вы получите:

string 'some image name' (length=15)
0 голосов
/ 06 августа 2009
$actual_name = str_replace('_', ' ', basename($input));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...