Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从包含url的字符串中获取当前文件夹?_Php - Fatal编程技术网

Php 如何从包含url的字符串中获取当前文件夹?

Php 如何从包含url的字符串中获取当前文件夹?,php,Php,基本上,我有一个包含php脚本的文件夹,然后在该文件夹中我有另一个包含脚本的文件夹。我想在每个文件夹的index.php脚本中加载相同的头文件。要包含的脚本是位于includes文件夹中的nav.php 树 我想这样做: if getcwd() = 'Folder2'{ include('../../includes/nav.php'); }else{ include('../includes/nav.php'); 但问题是getcwd()以字符串形式返回整个路径,但我只需要c

基本上,我有一个包含php脚本的文件夹,然后在该文件夹中我有另一个包含脚本的文件夹。我想在每个文件夹的index.php脚本中加载相同的头文件。要包含的脚本是位于includes文件夹中的nav.php

我想这样做:

if getcwd() = 'Folder2'{
    include('../../includes/nav.php');
}else{
    include('../includes/nav.php');
但问题是getcwd()以字符串形式返回整个路径,但我只需要cur目录名。如何剪切字符串以删除除目录名以外的所有内容。所有的解决方案都很好,但我对以这种方式分割字符串的函数特别感兴趣。

参见函数:

basename
请在此处阅读:

应将路径中的文件夹名称返回给您。 下面是basename和dirname的示例:

#> pwd
/home/user
#> php
<?php
echo getcwd() . "\n" ;
echo dirname( getcwd()) . "\n" ;
echo basename( getcwd()) . "\n" ;
?>
/home/user
/home
user
#>pwd
/家庭/用户
#>php
/家庭/用户
/家
用户

在旧版PHP中创建相对于\u DIR\uu或dirname(\u FILE\uu)的include路径。或者到$\u服务器['DOCUMENT\u ROOT']。永远不要到当前目录

希望有帮助

请尝试:

if (basename(dirname(__FILE__)) = 'Folder2'){
    include('../../includes/nav.php');
}else{
    include('../includes/nav.php');
}

可以使用特殊变量

$_SERVER['PHP_SELF']
在url中列出DNS名称后的所有内容。此时最简单的方法可能是使用explode函数将其拆分,使用“/”作为分隔符,删除数组的最后一个元素(php文件名),然后使用内爆将整个字符串作为单个变量返回


这将从web根目录中为您提供当前目录。

我认为这适用于包含在路径中的文件的当前路径,而不是从getcwd()返回的字符串???为什么我的答案是-2分?不如解释一下我写错了什么,而不是点击向下的箭头,好吗?当然,我明白。您甚至无法单击两次向下箭头。因此,我想知道为什么突然出现了两次-1,即使答案IMHO对您来说是正确的,请查找/a/B/C路径的“C”名称,而basename(“/a/B/C”)将返回您“C”-这就是您需要的。奇怪,我也不知道为什么投了反对票。根据OP的要求,这是完全正确的。给定
$path='/var/www/folder2'
(这正是getcwd可能返回的内容),
basename($path)
将返回
folder2
。我对用法感到困惑,让我来测试一下,虽然doc root获得了,谢谢。。但我也能从这个意义上得到一个关于如何切割弦的答案吗?因为我确实认为它在这条路上是有益的。我所知道的是substr和counting,但我想根据斜线的位置或确定来切割words@Duice352不知道你的意思,但是学习regexp和字符串函数。你需要!在PHP中执行的任何操作都会遇到字符串。没有其他方法可以绕过它们:)顺便说一句,它说我要等两分钟。而且regexp看起来非常复杂,您可以向我指出任何好的资源。。该手册缺少我在运动和视觉方面最了解的用法示例。@Duice352不确定您需要什么,但查看explode()函数和preg_split()。这会让你走上正轨。这些将把路径分成数组,然后您可以处理它们。@Duice352
basename
将为您获取路径的文件名/最后一个文件夹
dirname
将获得路径减去文件名/最后一个文件夹。对于像路径这样的结构,文件夹/文件描述几乎没有变化的东西,regex是一种过火的方法。您可以只
分解('/',$path)
并拥有每个文件夹/文件名的数组。
include(__DIR__.'/../../includes/nav.php'); // Folder 2 files
include(__DIR__.'/../includes/nav.php'); // Folder 1 files
if (basename(dirname(__FILE__)) = 'Folder2'){
    include('../../includes/nav.php');
}else{
    include('../includes/nav.php');
}
$_SERVER['PHP_SELF']