我已經完成我的研究發佈之前,但無法找到答案。如何獲得特定字符後的字符串部分?獲取字符串後避免UTF-8錯誤某些字符
例如,對於字符串:
gallery/user/profile/img_904.jpg
我要回:
img_904.jpg
我還擔心蟲子與basename()
關於UTF-8含亞洲字符的文件名。
我已經完成我的研究發佈之前,但無法找到答案。如何獲得特定字符後的字符串部分?獲取字符串後避免UTF-8錯誤某些字符
例如,對於字符串:
gallery/user/profile/img_904.jpg
我要回:
img_904.jpg
我還擔心蟲子與basename()
關於UTF-8含亞洲字符的文件名。
在這種情況下,你可以使用basename()
function:
php > $path = 'gallery/user/profile/img_904.jpg';
php > echo basename($path);
img_904.jpg
作爲一個更一般的例子,如果你想獲得的部分例如,您可以使用類似這樣的方法:
php > $string = 'Field 1|Field 2|Field 3';
php > echo substr(strrchr($string, '|'), 1);
Field 3
甚至:
php > $string = 'Field 1|Field 2|Field 3';
php > echo substr($string, strrpos($string, '|') + 1);
Field 3
編輯
你注意到UTF-8處理問題basename()
,這是我與PHP的幾個版本碰上還有一個問題。我使用下面的代碼作爲一種變通方法上UTF-8路徑:
/**
* Returns only the file component of a path. This is needed due to a bug
* in basename()'s handling of UTF-8.
*
* @param string $path Full path to to file.
* @return string Basename of file.
*/
function getBasename($path)
{
$parts = explode('/', $path);
return end($parts);
}
從PHP basename()
documentation:
注: 基本名()是語言環境感知,所以它才能看到正確的basename與多字節字符路徑,必須使用setlocale()函數設置匹配的語言環境。
是否修復了'basename()'錯誤?處理亞洲人物? – user3284463
啊,不知道我們在處理UTF-8。看我的編輯;我爲該場景添加了一個工作示例。 – Will
<?php
$path = 'gallery/user/profile/img_904.jpg';
$filename = substr(strrchr($path, "/"), 1);
echo $filename;
?>
這將幫助你..
$path = gallery/user/profile/img_904.jpg;
$temp = explode('/', $path);
$filename = $temp[count($temp)-1];
http://stackoverflow.com/questions/1418193/how-to-get-file-name-from-full-path-with-php – alextsil
哪個人物?你試過什麼了? – Cristik
'gallery/user/profile/img_904.jpg'是路徑。我想返回'img_904.jpg' – user3284463