как вы извлекаете корневой каталог? - PullRequest
0 голосов
/ 07 декабря 2010

Я все еще изучаю php.

'SCRIPT_FILENAME' => string 'D:/Project Storage/wnmp/www/folder/index.php' (length=45)
'SCRIPT_NAME'     => string '/folder/index.php' (length=18)
'DOCUMENT_URI'    => string '/folder/index.php' (length=18)
'PHP_SELF'        => string '/folder/index.php' (length=18)
'REQUEST_URI'     => string '/folder/helloworld/helloworldtwo/etc' (length=15)

, как вы можете видеть, я просто хочу получить helloworld/helloworldtwo/etc

любую идею извлечь папку ?так что это будет helloworld/helloworldtwo/etc?

, что я думаю, я определяю мою папку как $root = 'folder'.тогда я извлекаю его, если оно совпадает, но проблема в чем?

вторая идея состоит в том, чтобы получить из php_self или чего-либо выше, чтобы получить первое из /first/second.php, но, опять же, я не знаю лучший способ сделать это.

и другая проблемаэто когда у нас как две папки спереди?Кстати, спасибо за все повторы, я все еще делаю некоторые чтения php.net, тестирую и пытаюсь.

'SCRIPT_FILENAME' => string 'D:/Project Storage/wnmp/www/folder/index.php' (length=45)
'SCRIPT_NAME'     => string '/folder/folder2/index.php' (length=18)
'DOCUMENT_URI'    => string '/folder/folder2/index.php' (length=18)
'PHP_SELF'        => string '/folder/folder2/index.php' (length=18)
'REQUEST_URI'     => string '/folder/folder2/helloworld/helloworldtwo/etc' (length=15)

Вопрос остается тем же, как я могу получить helloworld / hellowrodltwo / и т.д. правильный путь.

edit * ребята, большое спасибо, я принял решение

$str = 'folder/folder/helloworld/helloworldtwo/etc';
$folder = 'folder/folder';
$q = str_replace($folder, NULL, $str);
echo $q;

, но если есть что-то / альтернатива или лучший способ сделать это, пожалуйста, сделайте.

Еще раз спасибо.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2010

Вы можете использовать функцию разнесения в PHP

$str = 'folder/helloworld/helloworldtwo/etc';

print_r(explode('/', $str, 2));

Вывод будет:

Array
(
    [0] => folder
    [1] => helloworld/helloworldtwo/etc
)

Если у вас несколько папок /, вы можете использовать «folder /» в качестве разделителя и не накладывать ограничение

$str = 'folder/folder/helloworld/helloworldtwo/etc';

print_r(explode('folder/', $str));

Вывод будет:

array (
  0 => '',
  1 => '',
  2 => 'helloworld/helloworldtwo/etc',
)

тогда вы можете использовать функцию implode, чтобы соединить ее обратно в строку

$returnValue = implode('', array (
  0 => '',
  1 => '',
  2 => 'helloworld/helloworldtwo/etc',
));

Присоединяясь к этим 2 функциям, вы можете удалить, сколько папок вы хотите из URL, и иметь чистый URL в конце в строке

1 голос
/ 07 декабря 2010

Если вы знаете, что это всегда будет "/folder/", который вы хотите удалить, тогда вы можете использовать что-то вроде:

$extracted = str_replace("/folder/","",$_SERVER['REQUEST_URI'],1);

Чем этот шаг заменяет все вхождения /folder/ и пустой строкой.Это приведет к проблемам с URL, такими как /folder/helloworld/folder/helloworld2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...