Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP如何在最后一个斜杠后剪切子字符串?_Php_Regex_String - Fatal编程技术网

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'
(即,它只返回字符串)