1

我有一个输出路径的函数,这里有一些结果:

http://server.com/subdirectory/subdiretory/2021/12/file.txt
http://server.com/subdirectory/subdiretory/something/else/2016/16/file.txt
http://server.com/subdirectory/subdiretory/2001/22/file.txt
C:\totalmess/mess\mess/2012/06/file.txt

我想从这些文件名和两个父目录中删除所有内容,所以上面的内容如下所示:

/2021/12/file.txt
/2016/16/file.txt
/2001/22/file.txt
/20012/06/file.txt

所以基本上我必须从最后找到第三个“/”,然后将其与所有内容一起显示。

我不太了解 PHP,但我想用 substr()、stripos() 和 strlen() 很容易实现,所以:

$string ="http://server.com/subdirectory/subdiretory/2001/22/file.txt"
$end = strlen($string);
$slash = // How to get the right slash using stripos()?
$output = substr($string, $slash, $end);
echo $output;

这是这样做的正确方法,还是有另一个内置函数可以在字符串中搜索 -nth 符号?

4

2 回答 2

3

我说放弃功能,str只是explode,它=)array_sliceimplode

$end='/'.implode('/',array_slice(explode('/',$string),-3));
于 2011-08-17T21:36:38.677 回答
-1

爆炸然后内爆非常容易。但是,如果您想改用字符串函数,则可以使用strrpos

$string ="http://server.com/subdirectory/subdiretory/2001/22/file.txt"
$slash = strrpos( $string, '/', -3 ); // -3 should be the correct offset.
$subbed = substr( $string, $slash ); //length doesn't need to be specified.
于 2011-08-17T22:08:26.430 回答