将$ _GET变量与php中的数组进行比较

时间:2012-01-12 17:56:09

标签: php

我使用$ _GET []从php中的url获取变量。该网址如下:http://www.site.com/index.php?x=B%FCergschaften我将其与数组中的值进行比较:$y=array('Bauherrenhaftpflicht','Gebäudeversicherung','Büergschaften');

据我所知,url中的变量是由$ _GET函数解码的,但是当我将它与数组进行比较时,我得不到匹配。

这是我用来比较的代码:

$x = $_GET['x']; foreach($y as $value){ if($value == $x){ echo "Found!"; } }

我尝试了urldecode function,但它不起作用。

如何正确解码url中的变量,以便正确解码特殊字符并将变量与数组进行比较?

非常感谢。

2 个答案:

答案 0 :(得分:3)

因为您使用的是超出默认字符集的特殊字符,您应该解码数组值或将GET参数值编码为UTF-8

我正在本地进行测试,它对我有用:

$x = utf8_encode(urldecode($_GET['x']));
$y=array('Bauherrenhaftpflicht','Gebäudeversicherung','Büergschaften');

echo in_array($x,$y);  // outputs 1 (true)

让我们知道它是否适合您。

答案 1 :(得分:2)

正如评论中所述:

$x = utf8_encode(urldecode($_GET['x']));

而且你应该/可以使用in_array()

if (in_array($x, $y)) {
echo "Found!";
}