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

ファイル名と 2 つの親ディレクトリを除いて、これらからすべてを切り取りたいので、上記のものは次のようになります。

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

したがって、基本的には、最後から 3 番目の「/」を見つけて、その後にすべてを表示する必要があります。

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;

これはこれを行う正しい方法ですか、それとも文字列内の -n 番目の記号を検索する別の組み込み関数があるのでしょうか?

4

2 に答える 2

-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 に答える