2 相同的字符串在字符串长度上不匹配 PHP

2 Identical Strings aren't matching in string length PHP

作为我系统的一部分,我正在尝试比较来自 2 种不同类型请求的信息以允许对某些页面的权限,但将 运行 保留在一个令我困惑的字符串比较问题中。

我得到的结果

string(26) "?type=week&date=2015-08-06" // exploded URI
string(30) "?type=week&date=2015-08-06" // query string 

展开的 URI

$pageReqCheck      = explode("/", urldecode($_SERVER["REQUEST_URI"]));
$accessPermissions = $pageReqCheck[3];

查询字符串

$queryString       = "?".$_SERVER['QUERY_STRING'];

编辑 FOR 循环的结果

查询字符串

int(63) int(116) int(121) int(112) int(101) int(61) int(119) int(101) int(101) int(107) int(38) int (97) 整数(109) 整数(112) 整数(59) 整数(100) 整数(97) 整数(116) 整数(101) 整数(61) 整数(50) 整数(48) 整数(49) 整数(53 ) 整数(45) 整数(48) 整数(56) 整数(45) 整数(48) 整数(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) 整数(97) 整数(116) 整数(101) 整数(61) 整数(50) 整数(48) 整数(49) 整数(53) 整数(45) 整数(48) 整数(56) 整数(45 ) 整数 (48) 整数 (54)

编辑了不同的解决方案

$queryString = html_entity_decode($_SERVER['QUERY_STRING']);
<?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&amp;date=2015-08-06
?type=week&date=2015-08-06

(在不解释 html 实体的控制台上)。

您通过 $_SERVER["REQUEST_URI"] 获得的字符串包含文字 & 而另一个包含表示相同字符的 html 实体 &amp;
您可能使用 (html) 浏览器作为输出媒介,因此看不出有何不同。