从动态URL php获取文件夹名称
我的URL可能在下面 (一) (二) (三) (四) (五) (六) 7) 但我想要最后的文件夹名,比如 1) 没有 2) 折叠1 3) 折叠1 4) 折叠2 5) 折叠2 6) 折叠2 7) 折叠2 我用过跟随,但没有用从动态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
<?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;