PHP форматирование строки (substr) - PullRequest
1 голос
/ 18 августа 2011

У меня есть функция, которая выводит путь, вот некоторые результаты:

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

Я хочу вырезать все из этих исключений filename и двух родительских каталогов, поэтому приведенные выше будут выглядеть так:

/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 ]

3 голосов
/ 18 августа 2011

Я говорю, отказаться от str функций, просто explode, array_slice и implode it =)

$end='/'.implode('/',array_slice(explode('/',$string),-3));
0 голосов
/ 18 августа 2011

Взорваться, а затем взорваться очень легко Но если вы хотите вместо этого использовать строковую функцию, вы можете использовать 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.
...