我在发布之前完成了我的研究,但找不到答案。如何获取某个字符后的字符串部分?
例如,对于字符串:
gallery/user/profile/img_904.jpg
我想回来:
img_904.jpg
我还关注basename()
关于包含亚洲字符的UTF-8文件名的错误。
答案 0 :(得分:3)
在这种情况下,您可以使用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
修改强>
您注意到basename()
中的UTF-8处理问题,这是我遇到的几个版本的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()函数设置匹配的语言环境。
答案 1 :(得分:2)
<?php
$path = 'gallery/user/profile/img_904.jpg';
$filename = substr(strrchr($path, "/"), 1);
echo $filename;
?>
这会对你有帮助..
答案 2 :(得分:0)
$path = gallery/user/profile/img_904.jpg;
$temp = explode('/', $path);
$filename = $temp[count($temp)-1];