【发布时间】:2012-09-13 19:37:15
【问题描述】:
我有以下代码 (1) 从 url 获取页面/部分名称 (2) 清理字符串,然后将其分配给变量。
我想知道是否有任何建议可以改进此代码以提高效率,可能更少 if / else 语句。
此外,任何建议我如何编码,以便它占 url 结构中的子目录的 x 数量。现在我以非常手动的方式最多检查 3 个。
我希望它可以处理任何网址,例如:www.domain.com/level1/level2/level3/level4/levelx/...
这是我当前的代码:
<?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]));
}
}
}
}
?>
【问题讨论】:
-
使用分隔符代替“?”在您的 url 方案中,您可以随心所欲地深入。 example.com/some/deep/url/goes/here/_/query-string-here
-
你能更清楚地解释一下你在寻找什么样的输出吗?
-
这个问题也可能是Code Review的话题
-
谢谢赫伯特,不知道新网站的存在。
标签: php string url url-rewriting str-replace