我有以下代码。我希望检查方法hasQuerystring()
能够传递修改后的url
..
但是,结果显示hasQuerystring始终返回false,这意味着该参数未指向修改后的url
..
以下是代码:
private function __addParams(&$url, $params, $addedParams = null) {
if(!empty($addedParams)) {
foreach($params as $param => $val) {
if(!in_array($param, $addedParams)) {
$url .= ($this->__hasQuerystring($url))? "&{$param}={$val}" : "?{$param}={$val}" ;
}
}
} else {
foreach($params as $param => $val) {
$url .= ($this->__hasQuerystring($url))? "&{$param}={$val}" : "?{$param}={$val}" ;
}
}
return $url;
}
private function __hasQuerystring($url) {
return strpos('?',$url);
}
[编辑]
这是返回之前url
的值
https://mobile.domain.com/en/#/#m=2&eid=123?param1=9675?param2=23d9dj8rsaE3dG1
答案 0 :(得分:2)
使用strpos
首先将搜索内容传递给搜索,然后搜索下一个搜索内容。
查看文档:
http://php.net/manual/en/function.strpos.php
return strpos($url, '?') !== FALSE;
答案 1 :(得分:0)
替换
return strpos('?',$url);
带
return strpos($url, '?') !== FALSE;
请务必核对the manual。
警告
此函数可能返回布尔值FALSE,但也可能返回a 非布尔值,其值为FALSE。请阅读有关的部分 布尔值获取更多信息。使用===运算符进行测试 返回此函数的值。
这就是为什么总是返回FALSE。
此外,如果您不使用__addParams
的结果,则可以删除return $url;
稍后编辑:
我将return strpos('?',$url) !== FALSE;
替换为return strpos($url, '?') !== FALSE;
,因为Erik指出。