php-从url获取当前页面的名称并重新格式化字符串
我有以下代码:(1)从url获取页面/节名(2)清理字符串,然后将其分配给变量 我想知道是否有任何建议,我可以如何改进这段代码,使之更有效,可能更少的if/else语句 另外,还有任何建议,我可以如何编码它,使其占到url结构中x数量的子目录。现在我用一种非常手动的方式检查多达3个 我希望它能够处理任何url,例如:www.domain.com/level1/level2/level3/level4/levelx/ 这是我目前的代码:php-从url获取当前页面的名称并重新格式化字符串,php,string,url,url-rewriting,str-replace,Php,String,Url,Url Rewriting,Str Replace,我有以下代码:(1)从url获取页面/节名(2)清理字符串,然后将其分配给变量 我想知道是否有任何建议,我可以如何改进这段代码,使之更有效,可能更少的if/else语句 另外,还有任何建议,我可以如何编码它,使其占到url结构中x数量的子目录。现在我用一种非常手动的方式检查多达3个 我希望它能够处理任何url,例如:www.domain.com/level1/level2/level3/level4/levelx/ 这是我目前的代码: <?php $prefixName = 'w
<?php
$prefixName = 'www : ';
$getPageName = explode("/", $_SERVER['PHP_SELF']);
$cleanUpArray = array("-", ".php");
for($i = 0; $i < sizeof($getPageName); $i++) {
if ($getPageName[1] == 'index.php')
{
$pageName = $prefixName . 'homepage';
}
else
{
if ($getPageName[1] != 'index.php')
{
$pageName = $prefixName . trim(str_replace($cleanUpArray, ' ', $getPageName[1]));
}
if (isset($getPageName[2]))
{
if ( $getPageName[2] == 'index.php' )
{
$pageName = $prefixName . trim(str_replace($cleanUpArray, ' ', $getPageName[1]));
}
else
{
$pageName = $prefixName . trim(str_replace($cleanUpArray, ' ', $getPageName[2]));
}
}
if (isset($getPageName[3]) )
{
if ( $getPageName[3] == 'index.php' )
{
$pageName = $prefixName . trim(str_replace($cleanUpArray, ' ', $getPageName[2]));
}
else
{
$pageName = $prefixName . trim(str_replace($cleanUpArray, ' ', $getPageName[3]));
}
}
}
}
?>
您当前正在为-循环使用一个
,但没有为任何事情使用$i
迭代器-因此,对我来说,您可以完全放弃循环。据我所见,您只希望文件前面的目录名为$pageName
,如果没有前面的目录,则将其设置为主页
您可以通过$\u SERVER['PHP\u SELF']
来获取确切的文件名,而不是检查索引,还可以像当前一样在/
上拆分以获取“最后一个目录”。要获取最后一个目录,可以跳过索引并直接使用
我发现这段代码非常有用
$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') ===
FALSE ? 'http' : 'https'; // Get protocol HTTP/HTTPS
$host = $_SERVER['HTTP_HOST']; // Get www.domain.com
$script = $_SERVER['SCRIPT_NAME']; // Get folder/file.php
$params = $_SERVER['QUERY_STRING'];// Get Parameters occupation=odesk&name=ashik
$currentUrl = $protocol . '://' . $host . $script . '?' . $params; // Adding all
echo $currentUrl;
在您的url方案中使用分隔符代替“?”,您可以按自己的意愿进行深度搜索。你能更清楚地解释一下你想要的是什么样的输出吗?这个问题可能也是关于感谢Herbert的主题,他不知道新网站的存在。我非常喜欢这个解决方案,但它忽略了实际的页面名,即www.domain.com/subdir/my-page.php,pagename将是subdir,所以忽略my-page.php。我希望它是www:subdir:mypage@taulant“文件名”在变量$script
中,它是通过basename()
命令获得的。您可以随意使用/格式化它(例如使用$pageName.=':'.trim(str_replace($cleanUpArray,,$page));
)。
} else if ($count > 1) {
// we are in a sub-directory; "breadcrumb" them all together
$pageName = '';
$separator = ' : ';
foreach ($exploded as $page) {
if ($page == '') continue;
$pageName .= (($pageName != '') ? $separator : '') . trim(str_replace($cleanUpArray, ' ', $page));
}
$pageName = $prefixName . $pageName;
} else {
$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') ===
FALSE ? 'http' : 'https'; // Get protocol HTTP/HTTPS
$host = $_SERVER['HTTP_HOST']; // Get www.domain.com
$script = $_SERVER['SCRIPT_NAME']; // Get folder/file.php
$params = $_SERVER['QUERY_STRING'];// Get Parameters occupation=odesk&name=ashik
$currentUrl = $protocol . '://' . $host . $script . '?' . $params; // Adding all
echo $currentUrl;