我有两种网址:
首先
localhost/search?q=arg1&s=arg2
第二
localhost/search/arg1/arg2
注意:有时参数包含?
。像这样:
localhost/search/ar?g1/arg2 // this is belong to second kind
那么,我怎样才能检测到哪种URL?
这是我的代码:
$FirstKind = strpos($_SERVER['REQUEST_URI'], '?') ? true : false;
但如果其中一个参数包含true
(如上面的注释所示),则上述代码会返回?
。
答案 0 :(得分:1)
答案 1 :(得分:0)
这是一个可能的实现:
<?php
function getArg($arg, $url) {
$result = '';
$urlData = explode('&', parse_url($url)['query']);
foreach ($urlData as $urlPair) {
if (strpos($urlPair, '=') !== false) {
list($k, $v) = explode('=', $urlPair);
if (trim($k) == $arg) {
$result = trim($v);
break;
}
}
}
if (empty($result)) {
$urlParts = explode('/', $url);
for ($i = 0; $i < sizeof($urlParts); $i++) {
if (trim($urlParts[$i]) == trim($arg)) {
if (isset($urlParts[$i+1])) {
$result = $urlParts[$i+1];
break;
}
}
}
}
return $result;
}
用法:
$url1 = 'localhost/search?q=arg1&s=arg2';
$url2 = 'localhost/search/ar?g1/arg2';
echo "<pre>";
var_dump(getArg('q', $url1));
var_dump(getArg('ar?g1', $url2));
echo "<pre>";
输出:
string(4) "arg1"
string(4) "arg2"