我使用了正则表达式:
<?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 '';
}
输出:
www.steptoinstall.com
www.steptoinstall.com/folder1 folder1
www.steptoinstall.com/folder1 folder1
www.steptoinstall.com/folder1/folder2 folder2
www.steptoinstall.com/folder1/folder2 folder2
www.steptoinstall.com/folder1/folder2 folder2
www.steptoinstall.com/folder1/folder2 folder2
您可能在这里遇到问题:很难区分“www.steptoinstall.com/folder1”和“www.steptoinstall.com/folder1/index.php” - 如果会有一个没有 .php 结尾的 SEF url .