我希望从一行文本的末尾获取子字符串,比如说
$text = "bob/hello/myfile.zip";
我希望能够获取文件名,我想这将涉及在最后一个斜杠之后将所有内容作为子字符串,任何人都可以帮助我如何做到这一点是PHP?像
这样的简单函数$fileName = getFileName($text);
答案 0 :(得分:19)
查看basename()
。
答案 1 :(得分:10)
$text = "bob/hello/myfile.zip";
$file_name = end(explode("/", $text));
echo $file_name; // myfile.zip
end()
返回给定数组的最后一个元素。
答案 2 :(得分:8)
对于更一般的需求,请为启动参数使用负值 对于例如
<?php
$str = '001234567890';
echo substr($str,-10,4);
?>
将输出
1234
使用负参数意味着它从结尾的起始字符开始。
答案 3 :(得分:1)
正如Daniel所说,对于这个应用程序,你想使用basename()。对于更一般的需求,strrchr()
完全符合本文标题的要求。
答案 4 :(得分:0)
我想你可以使用strrpos找到最后一个'/',然后只是得到那个子串:
$ fileName = substr($ text,strrpos($ text,'/')+1);
虽然你可能真的想检查以确保那里有一个“/”,首先。
答案 5 :(得分:0)
function getSubstringFromEnd(string $string, int $length)
{
return substr($string, strlen($string) - $length, $length);
}
echo getSubstringFromEnd("My long text", 4); // text
答案 6 :(得分:-1)
您可以使用-1
作为第三个参数的值
echo substr("123456789", 0, -1);
// OUTPUT : 12345678
或
$string = "123456789"; // string
$num = 2; // Number of Caractérers to Display from right to left
$count = strlen($string); // Count string
echo substr($string, $count - $num);
// OUTPUT : 89