2010-12-07 19 views
0

Je suis encore en train d'apprendre le php.comment extrayez-vous le répertoire racine?

'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) 

comme vous pouvez le voir, je veux juste obtenir le helloworld/helloworldtwo/etc

toute idée de extraire le dossier? donc ce sera helloworld/helloworldtwo/etc?

ce que je pense est im définir mon dossier comme $root = 'folder'. alors je l'extrait si cela correspond, mais le problème est avec quoi?

la deuxième idée est d'obtenir de php_self ou quoi que ce soit ci-dessus pour obtenir le premier de /first/second.php, mais encore une fois je ne sais pas la meilleure façon de le faire.

et un autre problème est quand nous avons comme deux dossiers à l'avant? btw merci pour toute la relecture, je suis toujours en train de lire php.net, tester et essayer.

'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) 

la question est toujours la même comment puis-je obtenir le helloworld/hellowrodltwo/etc de la bonne façon.

modifier * les gars merci beaucoup j'ai fait une solution

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

mais s'il y a quelque chose/alternatif ou une meilleure façon de le faire s'il vous plaît faire.

Merci encore.

+1

Avez-vous regardé [parse_url] (http://php.net/manual/en/function.parse-url.php) et [pathinfo] (http: // uk3. php.net/manual/fr/function.pathinfo.php) - et leurs fonctions associées (comme basename, etc.)? – Mike

Répondre

2

Vous pouvez utiliser la fonction en PHP

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

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

exploser La sortie sera:

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

Si vous avez dossier multiples/vous pouvez faire usage 'folder /' comme délimiteur et n'impose pas de limite

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

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

sortie sera:

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

vous pouvez utiliser la fonction imploser pour le joindre dans une chaîne

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

Rejoindre ce 2 fonctions, vous pouvez supprimer le nombre de dossiers que vous voulez à partir de l'URL et de la nettoyer l'URL à la fin dans une chaîne

+0

que diriez-vous si j'ai deux dossiers? édité la question. –

1

Si vous savez que ce sera toujours "/folder/" que vous souhaitez supprimer, vous pouvez utiliser quelque chose comme:

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

Qu'est-ce que ce commets il remplace toutes les occurences de /folder/ avec et chaîne vide. Cela donnera des problèmes avec urls tels que /folder/helloworld/folder/helloworld2

+0

Il est important de noter que les barres obliques doivent toujours se trouver dans la chaîne sinon cela peut causer des problèmes. – RobertPitt