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


Compare $_GET variable to array in php

我正在使用$_GET[]从php中的url获取一个变量。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功能,但它不起作用。

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

非常感谢。

因为您使用的是默认字符集之外的特殊字符,所以您应该解码数组值或将GET param值编码为UTF-8

我正在本地测试它,它对我有效:

$x = utf8_encode(urldecode($_GET['x']));
$y=array('Bauherrenhaftpflicht','Gebäudeversicherung','Büergschaften');
echo in_array($x,$y);  // outputs 1 (true)

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

如评论中所述:

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

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

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