我有一個字符串這樣插入一個字符串轉換爲路徑
folder1/folder2/folder3/13007805372971.jpg
我應該怎麼做追加前的文件名的字符串?我想看起來像這樣
folder1/folder2/folder3/sometext_13007805372971.jpg
我有一個字符串這樣插入一個字符串轉換爲路徑
folder1/folder2/folder3/13007805372971.jpg
我應該怎麼做追加前的文件名的字符串?我想看起來像這樣
folder1/folder2/folder3/sometext_13007805372971.jpg
您可以使用pathinfo功能,其目的是解析路徑。
$s='folder1/folder2/folder3/13007805372971.jpg';
$x='sometext_';
$fos=pathinfo($s);
$s2=$fos['dirname'].DIRECTORY_SEPARATOR.$x.$fos['basename'];
不錯!簡短易讀,獨立於平臺。加1! – davogotland 2011-03-22 08:30:25
您可以使用下面的代碼來實現。
$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
這很好,但不適用於Windows路徑'C:\ xyz'。 – Unicron 2011-03-22 08:26:01
$file = new SplFileInfo('folder1/folder2/folder3/13007805372971.jpg');
printf('%s/sometext_%s', $file->getPath(), $file->getBasename());
也可以用它代替硬編碼的斜線到呼叫的DIRECTORY_SEPARATOR
不變。
preg_replace("/\/([^\/]+)$/", "/sometext_\\1", "folder1/folder2/folder3/13007805372971.jpg");
這需要該部分的最後斜線後,並在其後增加sometext_權。
$filePath = 'folder1/folder2/folder3/13007805372971.jpg';
$str = 'sometext_';
$newPath = dirname($filePath) . DIRECTORY_SEPARATOR . $str . basename($filePath);
+1我比較喜歡這個。 – kapa 2011-03-22 08:34:32
使用pathinfo獲取文件名的組件,然後根據需要插入添加。
$path_parts =pathinfo($string);
$string = $path_parts['dirname'].'/sometext_'.$path_parts['basename'];
前綴「folder1/folder2/folder3」總是一樣嗎? – cynicaloptimist 2011-03-22 08:25:59
最好的解決方案是基於'pathinfo()'的方法,根據當前操作系統的規則實際刪除文件名,而不是使用斜槓'/' – Unicron 2011-03-22 08:26:45
您是否找到了解決方案? :-) – 2011-03-22 09:17:29