PHP如何在最后一个斜杠后剪切子字符串?
嗨,我想知道在最后一个斜杠后如何从字符串中获取子字符串? 简而言之,我想从路径中获取文件名 例如,我得到如下字符串:PHP如何在最后一个斜杠后剪切子字符串?,php,regex,string,Php,Regex,String,嗨,我想知道在最后一个斜杠后如何从字符串中获取子字符串? 简而言之,我想从路径中获取文件名 例如,我得到如下字符串: test-e2e4/test-e2e4/test-e2e4/6.png 我想得到6.png我该怎么做? 我得到的目录只和文件名可以是所有格式,它也可以是其他东西,然后文件 或者test-e2e4/test-e2e4/test-e2e4/aaaaa并希望获得aaaaaaa 也许是正则表达式?或者你知道一些很好的函数可以帮我吗 像这样做 $yourstring = 'test-e2e
test-e2e4/test-e2e4/test-e2e4/6.png
我想得到6.png
我该怎么做?
我得到的目录只和文件名可以是所有格式,它也可以是其他东西,然后文件
或者test-e2e4/test-e2e4/test-e2e4/aaaaa
并希望获得aaaaaaa
也许是正则表达式?或者你知道一些很好的函数可以帮我吗 像这样做
$yourstring = 'test-e2e4/test-e2e4/test-e2e4/6.png';
$val = array_pop(explode('/',$yourstring)); // 6.png
您可以尝试使用和函数来解决此问题:
$str = 'test-e2e4/test-e2e4/test-e2e4/aaaaa.png';
$str = explode('/', $str);
$filename = array_pop($str);
echo $filename; //Output will be aaaaa.png
除了其他回复之外,PHP中实际上还有一个函数可以实现这一点:
basename
。例如:
$string = 'test-e2e4/test-e2e4/test-e2e4/6.png';
$base = basename($string); // $base == '6.png';
$string = 'test-e2e4/test-e2e4/test-e2e4/aaaaa';
$base = basename($string); // $base == 'aaaaa'
$string = '6.png';
$base = basename($string); // $base == '6.png'
此处的完整详细信息:您不需要为此使用正则表达式,您可以使用
substr()
获取字符串的一部分,并使用strrpos()
指定以下部分:
$full_path = "test-e2e4/test-e2e4/test-e2e4/6.png"
$file = substr( $full_path, strrpos( $full_path, "/" ) + 1 );
substr()
返回字符串的一部分,strrpos()
告诉它从字符串中最后一个斜杠的位置开始,并且+1从返回值中排除斜杠。或者您可以使用以下正则表达式:
[^\/]*$
如果我的字符串看起来像:6.png
?它会返回异常吗?还是“仍然爆炸”将设置一个单元素数组?@Vardius有什么特殊原因阻止你自己测试它吗…如果我的字符串是这样的:6.png
?它会返回异常吗???basename('6.png')=='6.png'
(即,它只返回字符串)