当当前URL中有一个可以部分工作但返回一些不必要结果的字符串时,我正在尝试创建IF语句。
// set patterns active
if ( $option == 'pattern' ) {
$patternvalue = "pattern=" . $v['id'];
$optionset = strpos($_SERVER['REQUEST_URI'], $patternvalue);
if ($optionset !== false) {
echo ' class="active" ';
}
}
如果pattern = 16,则使用上面的代码,那么该代码将回显class =“ active”(对于pattern = 16,但也对pattern = 1)……似乎只匹配第一个数字。
我不知道我是否应该使用preg_match,但是我是一个完全新手,也不知道如何使它与所需的所有正斜杠一起使用。
典型的网址结尾可能类似于:/?action = search&pattern = 23&fabric = 13&type = 2
答案 0 :(得分:2)
您可以这样做。
$url = "https://www.example.com/index.php?test1=1&test2=2&test3=3&test4=1";
$parse = parse_url($url);
print_r($parse);
/*
print_r($parse); output (array):
Array
(
[scheme] => https
[host] => www.example.com
[path] => /index.php
[query] => test1=1&test2=2&test3=3&test4=1
)
*/
parse_str($parse['query'], $query);
print_r($query);
/*
print_r($query); output (array):
Array
(
[test1] => 1
[test2] => 2
[test3] => 3
[test4] => 1
)
*/
// Version 1 - ?test1=1
if($query["test1"] == 1){
echo 'class="active1"'."\n"; /* output: class="active1" */
}
// Version 2 - ?test1=1&test2=2
if($query["test1"] == 1 && $query["test2"] == 2){
echo 'class="active2"'."\n"; /* output: class="active2" */
}
// Version 3 ?test1=1 <<and>> $option list control.
$options = array("a","b","c");
if($query["test1"] == 1 && in_array("a", $options)){
echo 'class="active3"'."\n"; /* output: class="active3" */
}
// Version 4 &test3=3 <<< value control.
if(in_array("3", $query)){
echo 'class="active4"'."\n"; /* output: class="active4" */
}
// Version 5 ?test1 <<< test1 query >>> found in url
if(array_key_exists("test1",$query)){
echo 'class="active5"'."\n"; /* output: class="active5" */
}
// Version 6 - ?ASDASDASD= <<< not found.
if(array_key_exists("ASDASDASD",$query)){
echo 'class="active6"'."\n"; /* not printed */
}
// Version 7 - advanced conditions
if($query["test1"] == 1){
if($query["test2"] == 2){
echo 'class="active7"'."\n"; /* output: class="active7" */
}
}else{
if($query["test3"] == 2){
echo 'class="active8"'."\n"; /* not printed */
}
}
// Version 9 -- multiple and advanced conditions
if(!empty($query["test1"]) && $query["test2"] == 2){
echo 'class="active9"'."\n"; /* output: class="active9" */
}else if(empty($query["test2"]) && $query["test3"] == 3){
echo 'class="active10"'."\n"; /* not printed */
}else{
echo 'class="active11"'."\n"; /* not printed */
}
dynamic reconfigure parameters-parse_url()
编辑:各种示例。
{{1}}