我有一个模拟目录结构的PHP树类。我想实现一个使用$_GET
和任意数量参数的函数,如果参数与树结构的目录标题一致,那么该目录就是网站上显示的初始目录。例如,如果有人写道:
.../index.php?dir1=Foo&dir2=Bar
然后它会搜索树的根目录,查找名为Foo
的子项,然后搜索Foo
的子项,查找名为Bar
的子项,依此类推。在旁注中,dir1
/ dir2
对我来说无关紧要,它们可以是任何东西,我只对这些指数指向的内容感兴趣。
我的问题是:
.
或HTML代码(如’
)。是
这有限制,应该写一个转换
能做我的比较吗?dir1
)
并只检查他们指向的内容(如Foo
)? 修改:有人可以写一个更具体的例子:.../index.php?dir1=Web Work&dir2=awebsite.com
答案 0 :(得分:1)
有像URL编码之类的东西。您的网络服务器和PHP会为您处理解码。
查看此功能:http://php.net/manual/en/function.urlencode.php
要循环浏览项目,正如@Barmar建议的那样,您可以使用foreach($_GET as $arg=>$dirname)
。这将使用$arg
中的键来逐步执行值。
另外,请注意让用户输入任意路径。
答案 1 :(得分:1)
特殊字符应为percent-encoded。在填写$_GET
之前,PHP将负责解码它们。
您可以使用foreach($_GET as $dirname)
。这将只是单步执行值,忽略键。
$curlevel = $tree;
foreach ($_GET as $dirname) {
$found = false;
foreach ($curlevel->children as $child) {
if ($child->name == $dirname) {
$curlevel = $child;
$found = true;
break;
}
}
if (!$found) {
// default to index page
}
}