Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
从动态URL php获取文件夹名称_Php_Url_Uri - Fatal编程技术网

从动态URL php获取文件夹名称

从动态URL php获取文件夹名称,php,url,uri,Php,Url,Uri,我的URL可能在下面 (一) (二) (三) (四) (五) (六) 7) 但我想要最后的文件夹名,比如 1) 没有 2) 折叠1 3) 折叠1 4) 折叠2 5) 折叠2 6) 折叠2 7) 折叠2 我用过跟随,但没有用 <?php $url = $_SERVER['REQUEST_URI']; print_r(dirname($url)); ?> 我怎样才能用PHP而不是.htaccess获得这个输出呢?也许这对你有用 <?php $urls = arr

我的URL可能在下面

(一)

(二)

(三)

(四)

(五)

(六)

7)

但我想要最后的文件夹名,比如

1) 没有

2) 折叠1

3) 折叠1

4) 折叠2

5) 折叠2

6) 折叠2

7) 折叠2

我用过跟随,但没有用

<?php
  $url = $_SERVER['REQUEST_URI'];
  print_r(dirname($url));
?>


我怎样才能用PHP而不是.htaccess获得这个输出呢?

也许这对你有用

<?php
   $urls = array(
      'http://www.steptoinstall.com',
       'http://www.steptoinstall.com/folder1',
       'http://www.steptoinstall.com/folder1/folder2/index.php?id=12'
   );

// The Function for your work
function getFolder($url) {
    $res = parse_url($url);
    if(!isset($res['path'])) {
        return false;
    }
    $res = explode('/',$res['path']);
    $out = false;
    foreach($res as $p) {
        if(!empty($p) && strpos($p,'.')===false) $out = $p;
    }
    return $out;
}

// Testing
foreach($urls as $url) {
   var_dump(getFolder($url));

}

如果我正确理解您的问题,您可以使用以下自定义函数

function get_arg() {
   $arguments = array();
   $path = $_SERVER['REQUEST_URI'];
   if (isset($path)) {
      $arguments = explode('/', $path);
   }
   $url_len = count($arguments);
   return ($arguments[$url_len - 2]) ? $arguments[$url_len - 2] : 'none';
 }

希望这对您有所帮助。

我使用了正则表达式:

<?php
$data = array(
'www.steptoinstall.com',
'www.steptoinstall.com/folder1',
'www.steptoinstall.com/folder1/index.php',
'www.steptoinstall.com/folder1/folder2',
'www.steptoinstall.com/folder1/folder2/',
'www.steptoinstall.com/folder1/folder2/index.php',
'www.steptoinstall.com/folder1/folder2/index.php?id=12',
);

foreach($data as $url)
{
    print $url." ".get_folder($url)."\n";
}

function get_folder($url)
{
    $url = preg_replace('/(.*)\/.*\..*/', '$1', $url);
    $url = preg_replace('/\/$/', '$1', $url);

    $matches = array();
    if (preg_match('/.*\/(.*)/', $url, $matches))
    {
        return $matches[1];
    }

    return '';
}
这里可能有一个问题:如果有一个SEF url没有.php结尾,就很难区分“www.steptoinstall.com/folder1”和“www.steptoinstall.com/folder1/index.php”

$path = 'www.steptoinstall.com/folder1/folder2/';
$folders = explode('/', $path);
$i = 0;
foreach($folders as $folder) {
    if (strpos($folder, '.') !== FALSE || empty($folder)) {
        unset($folders[$i]);
    }
    $i++;
}
$what_we_need = end($folders);
echo $what_we_need;
很抱歉,我的第一个答案被拒绝了,这可能会起作用

$path = 'www.steptoinstall.com/folder1/folder2/';
$folders = explode('/', $path);
$i = 0;
foreach($folders as $folder) {
    if (strpos($folder, '.') !== FALSE || empty($folder)) {
        unset($folders[$i]);
    }
    $i++;
}
$what_we_need = end($folders);
echo $what_we_need;