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

时间:2015-08-05 15:40:25

标签: php string query-string

我正在尝试将来自两种不同类型的请求的信息作为我系统的一部分进行比较,以允许对某些页面的权限,但仍然遇到令我难以理解的字符串比较问题。

结果我正在

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'];

来自LOOP的编辑结果

查询字符串

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']);

1 个答案:

答案 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&amp;date=2015-08-06
?type=week&date=2015-08-06

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

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