我正在寻找一个PHP函数,它接受一个相对的URL并返回是否是这个URL.
<?PHP
function isCurrentPage($page)
{
//Magic
}
?>
Run Code Online (Sandbox Code Playgroud)
这将传递的值,例如"/","/foo/bar",page.php,甚至"foo/page.php?parameter=value".
我的第一次尝试涉及使用$page == $_SERVER["REQUEST_URI"],但是说"/foo/bar" != "/foo/bar/".这不是什么大问题,但困难随之而来"/foo/bar" != "/foo/bar/index.php?parameter=value".就我的目的而言,我需要它说这些是等价的.
如何判断当前URL是否是传递给此函数的URL,具有给定的限制?我希望一个简单,强大的解决方案能够保证在未来5年内发挥作用,因为这是一个长期的,高使用率的项目.旧的,非弃用的函数和正则表达式是更可取的.
要进行synopsize,该方法必须true在url上返回http://example.com/foo/bar:
isCurrentPage("http://example.com/foo/bar")isCurrentPage("http://example.com/foo/bar/")isCurrentPage("http://example.com/foo/bar/index.php")isCurrentPage("http://example.com/foo/bar/index.phps")isCurrentPage("http://example.com/foo/bar/index.phtml")isCurrentPage("/foo/bar")isCurrentPage("/foo/bar/")isCurrentPage("/foo/bar/index.php")isCurrentPage("/foo/bar?parameter=value")isCurrentPage("/foo/bar/?parameter=value")isCurrentPage("/foo/bar/index.php?parameter=value")isCurrentPage("/foo/bar/index.php#id")isCurrentPage("#id")isCurrentPage("index.php")isCurrentPage("index.php?parameter=value")等等.
您可以使用该parse_url()功能拆分URL并删除所有非重要数据,例如查询字符串.
这是一个简单的例子:
$url = 'http://yoursite.com/foo/bar?some=param';
$urlParts = parse_url($url);
// Array
// (
// [scheme] => http
// [host] => yoursite.com
// [path] => /foo/bar
// [query] => ?some=param
// )
Run Code Online (Sandbox Code Playgroud)
您现在可以将$urlParts['path']您的已知路径列表进行比较......
| 归档时间: |
|
| 查看次数: |
3469 次 |
| 最近记录: |