我正在尝试将来自两种不同类型的请求的信息作为我系统的一部分进行比较,以允许对某些页面的权限,但仍然遇到令我难以理解的字符串比较问题。
string(26) "?type=week&date=2015-08-06" // exploded URI
string(30) "?type=week&date=2015-08-06" // query string
$pageReqCheck = explode("/", urldecode($_SERVER["REQUEST_URI"]));
$accessPermissions = $pageReqCheck[3];
$queryString = "?".$_SERVER['QUERY_STRING'];
查询字符串
int(63)int(116)int(121)int(112)int(101)int(61)int(119)int(101)int(101)int(107)int(38)int(97 )int(109)int(112)int(59)int(100)int(97)int(116)int(101)int(61)int(50)int(48)int(49)int(53)int (45)int(48)int(56)int(45)int(48)int(54)
分解的URI
int(63)int(116)int(121)int(112)int(101)int(61)int(119)int(101)int(101)int(107)int(38)int(100 )int(97)int(116)int(101)int(61)int(50)int(48)int(49)int(53)int(45)int(48)int(56)int(45)int (48)int(54)
$queryString = html_entity_decode($_SERVER['QUERY_STRING']);
答案 0 :(得分:3)
<?php
$input = [
'int(63) int(116) int(121) int(112) int(101) int(61) int(119) int(101) int(101) int(107) int(38) int(97) int(109) int(112) int(59) int(100) int(97) int(116) int(101) int(61) int(50) int(48) int(49) int(53) int(45) int(48) int(56) int(45) int(48) int(54)',
'int(63) int(116) int(121) int(112) int(101) int(61) int(119) int(101) int(101) int(107) int(38) int(100) int(97) int(116) int(101) int(61) int(50) int(48) int(49) int(53) int(45) int(48) int(56) int(45) int(48) int(54) '
];
foreach($input as $t) {
preg_match_all('!int\((\d+)\)!', $t, $m);
foreach( $m[1] as $c ) {
echo chr($c);
}
echo "\r\n";
}
打印
?type=week&date=2015-08-06
?type=week&date=2015-08-06
(在不解释html实体的控制台上)。
您通过$ _SERVER [&#34; REQUEST_URI&#34;]获得的字符串包含文字&
,而另一个包含代表相同字符的html实体&
。
您可能使用(html)浏览器作为输出媒介,因此没有看到差异。