2013-04-03 5 views
2

У меня есть следующие строки файлов.получить filename из строки

/img/studio/record.JPG 
/img/studio/view.JPG 
/img/studio/doors.JPG 
img/team/andy.jpg 
img/team/jim.jpg 

Теперь я хотел бы получить только имя файла, чтобы посмотреть в db.

как: record.jpg

Что лучший способ, чтобы получить его? (Мне нужно решение php.)

Спасибо за любую помощь заранее.

+1

см PHP [PathInfo()] (http://php.net/manual /en/function.pathinfo.php) – 2013-04-03 08:55:00

+0

Вам нужно При хранении или извлечении из базы данных? –

ответ

4

Использование basename:

echo basename('/img/studio/record.JPG'); 

вернется record.JPG.

3

попробовать pathinfo()

pathinfo('/img/studio/record.JPG', PATHINFO_BASENAME) 
+0

Я видел все: ^) – sectus

+0

Просто любопытно, почему голосующий голос на этот конкретный ответ? – Baba

+0

@Baba, это было другое ... – sectus

2

Использование pathinfo (docs):

$path = pathinfo('/img/studio/record.JPG'); 
echo $path['basename'];  // record.JPG 

Таким образом, вы можете легко получить имя каталога или расширение файла, а также:

echo $path['dirname'];  // /img/studio 
echo $path['extension']; // JPG 
+0

Что быстрее: Pathinfo ('/ IMG/студии/record.jpg', PATHINFO_BASENAME) или базовых ('/ IMG/студия/record.jpg'); – hamburger

+0

'basename' намного проще, поэтому, если есть какая-то значительная разница в производительности, я бы поспорил на нем. Вы можете увидеть их реализацию: [pathinfo()] (https://github.com/php/php-src/blob/master/ext/standard/string.c#L1532) и [basename()] (https://github.com/php/php-src/blob/master/ext/standard/string.c#L1487). – kamituel

0

Я думаю, basename функция должна делать то, что вам нужно:

<?php 
echo basename("/img/studio/record.JPG"); 
?> 

возвращает

record.JPG 
+0

Возможно, вы захотите включить некоторую информацию по этой ссылке, если в будущем связь будет мертвой. – Bridge

+0

php.net собирается мертвым?!? – Dale

+0

@ Дале. В общем, ответ с помощью только одной ссылки - не полный ответ. – HamZa

1

Я хотя provinding несколько способов, чтобы обеспечить тот же результат:

$str = '/img/studio/record.JPG'; 

echo basename($str); 
echo pathinfo($str, PATHINFO_BASENAME); 
echo explode('/', $str)[count(explode('/', $str))-1]; 
echo strrev(explode("/", strrev($str))[0]); 
echo preg_replace('/.*\//', '', $str); 
Смежные вопросы