是否有php方法根据url中某些参数的值更改php变量?
例如,我有这个特殊的网址:
http://example.com/post-url-that-contains-value2/?custom_parameter=value1-value2-value3
我想要做的是检查值2(文本字符串)是否仅在custom_parameter中退出而不检查post url(遗憾的是它包含与值2相同的字符串)。当我在custom_parameter中检查并找到值2时,将$ myphpvariable更改为特定值。
我正在做的是这样做:
$checkurl = $_SERVER['QUERY_STRING'];
if(preg_match('/^(?=.*custom_parameter)(?=.*value2).*$/m', $checkurl) === 1) {
$myphpvariable = 'Found!';
}
else {
$myphpvariable = 'NOT Found!';
}
不幸的是,此方法检查整个网址,即使在网址为$myphpvariable
的情况下,它也会将'Found!'
更改为http://example.com/post-url-that-contains-value2/?custom_parameter=value3
,因为它会看到value2在帖子网址。
任何想法如何使这项工作正常?
答案 0 :(得分:0)
您可以单独检查uri和参数
//explode the url on the ? and get the first part, the uri
$uri = explode('?', $_SERVER['REQUEST_URI'])[0];
//get everything in custom_parameter
$customParameter = $_GET['custom_parameter'];
//check value2 is in not in the uri and is in the params
if(strpos($uri, 'value2') === false && strpos($customParameter, 'value2') !== false){
$myphpvariable = 'Found!';
}
else {
$myphpvariable = 'NOT Found!';
}
或者您只是想检查custom_parameter并忽略网址
//get everything in custom_parameter
$customParameter = $_GET['custom_parameter'];
if(strpos($customParameter, 'value2') !== false){
$myphpvariable = 'Found!';
}
else {
$myphpvariable = 'NOT Found!';
}
答案 1 :(得分:0)
我只使用$_GET
数组,而不是查看整个网址,因为它是自己访问查询字符串参数的最简单方法。
strpos()
可能是使用$_GET
数组搜索特定文本的最快捷最简单的方法,但您也可以使用类似的方法,因为您的值都由相同的分隔符分隔。这样,它会将custom_parameter
char上的-
值字符串拆分为一个数组,然后在该数组中搜索value2
。如果您想稍后搜索其他值,这可能会更有用。
$customParamater = $_GET["custom_parameter"];
$values = explode("-",$customParamater);
if (in_array("value2",$values)) {
$myphpvariable = 'Found!';
} else {
$myphpvariable = 'NOT Found!';
}