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&date=2015-08-06
?type=week&date=2015-08-06
(在不解释 html 实体的控制台上)。
您通过 $_SERVER["REQUEST_URI"] 获得的字符串包含文字 &
而另一个包含表示相同字符的 html 实体 &
。
您可能使用 (html) 浏览器作为输出媒介,因此看不出有何不同。
作为我系统的一部分,我正在尝试比较来自 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&date=2015-08-06
?type=week&date=2015-08-06
(在不解释 html 实体的控制台上)。
您通过 $_SERVER["REQUEST_URI"] 获得的字符串包含文字 &
而另一个包含表示相同字符的 html 实体 &
。
您可能使用 (html) 浏览器作为输出媒介,因此看不出有何不同。