PHP字符串格式(substr)

时间:2011-08-17 21:31:00

标签: php string substr strlen

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

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符号?

2 个答案:

答案 0 :(得分:3)

我说放弃str个功能,只需explodearray_sliceimplode它=)

$end='/'.implode('/',array_slice(explode('/',$string),-3));

答案 1 :(得分:-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.