Вставить строку в путь - PullRequest
3 голосов
/ 22 марта 2011

У меня есть такая строка

folder1/folder2/folder3/13007805372971.jpg

Что мне нужно сделать, чтобы добавить строку перед именем файла? Я хотел бы выглядеть так

folder1/folder2/folder3/sometext_13007805372971.jpg

Ответы [ 6 ]

8 голосов
/ 22 марта 2011

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

$s='folder1/folder2/folder3/13007805372971.jpg';
$x='sometext_';
$fos=pathinfo($s);

$s2=$fos['dirname'].DIRECTORY_SEPARATOR.$x.$fos['basename'];
5 голосов
/ 22 марта 2011

Вы можете использовать класс SplFileInfo

$file = new SplFileInfo('folder1/folder2/folder3/13007805372971.jpg');
printf('%s/sometext_%s', $file->getPath(), $file->getBasename());

Можно также использовать константу DIRECTORY_SEPARATOR вместо жесткого кодирования косой черты в вызове.

Демонстрационная версия

3 голосов
/ 22 марта 2011
$filePath = 'folder1/folder2/folder3/13007805372971.jpg';
$str = 'sometext_';

$newPath = dirname($filePath) . DIRECTORY_SEPARATOR . $str . basename($filePath);
3 голосов
/ 22 марта 2011

Этого можно добиться, используя следующий код.

$string           = 'folder1/folder2/folder3/13007805372971.jpg';
$last_slash_pos   = strrpos($string, '/');
$path             = substr($string, 0, $last_slash_pos + 1);
$filename         = substr($string, $last_slash_pos + 1);

$filename_prefix  = 'sometext_';
$new_filename     = $path . $filename_prefix . $filename;

echo $new_filename; // Output: folder1/folder2/folder3/sometext_13007805372971.jpg

Просмотр прямой версии

0 голосов
/ 22 марта 2011

Получите компоненты имени файла, используя pathinfo, а затем подключите ваше дополнение, как требуется.

$path_parts =pathinfo($string);
$string = $path_parts['dirname'].'/sometext_'.$path_parts['basename'];
0 голосов
/ 22 марта 2011

preg_replace("/\/([^\/]+)$/", "/sometext_\\1", "folder1/folder2/folder3/13007805372971.jpg");

Принимает часть после последней косой черты и добавляет sometext_ сразу после нее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...