我想解析一个网址。这是我从教程中获得的代码,所以我假设它是正确的:
public function parseUrl()
{
if(isset($_GET['url']))
{
return $url = explode('/', filter_var(rtrim($_GET['url'], '/'), FILTER_SANITIZE_URL));
}
}
我正在使用explode
返回URL字符串的每个部分的数组,如下所示:
主页/索引/页
进入
Array ( [0] => home [1] => index [2] => page )
我已阅读有关rtrim
,filter_sanitize_url
和explode
的内容,但我不知道为什么上面的代码包含了所有这三个代码。
不会消毒字符串自动修剪'/'字符?因此,没有必要修剪'/',而只修剪空格......(?)
此外,如果爆炸范围也是'/',如果假设'/'被trim和sanitize_url删除,它如何仍然识别数组“开始和结束”的位置?
如果我简单地省略rtrim charlist'/',这样可以吗?它仍然有效,我尝试过。
我很困惑,我可能会混淆概念,我会很感激。
答案 0 :(得分:1)
...如果爆炸范围也是' /',它如何仍然识别数组"开始和结束的位置"如果' /'据说被trim和sanitize_url删除了?
爆炸仍然可以使用' /'作为分隔符,因为FILTER_SANITIZE_URL
没有定位' /'作为要删除的字符,rtrim
仅删除作为网址中最后一个字符存在的斜杠。 FILTER_SANITIZE_URL
有一个完整的字符列表,它从字符串中删除,但它确实以非ASCII字符为目标,而其他此类字符则不属于网址。正斜杠字符确实属于url,用于指定路径,因此不会在此处删除。 rtrim
确实删除了指定的正斜杠字符,但rtrim
和删除所有匹配字符之间存在差异。 rtrim
完全正确修剪,这意味着会查看输入字符串的最右侧字符,如果根据目标字符找到匹配项,则会将其删除。因此,explode
仍将按预期工作,因为所有内部' /'此过滤后,字符保持不变。