我有一个输出路径的函数,这里有一些结果:
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符号?
答案 0 :(得分:3)
我说放弃str
个功能,只需explode
,array_slice
和implode
它=)
$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.