代码之家  ›  专栏  ›  技术社区  ›  David J. Davis

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

  •  1
  • David J. Davis  · 技术社区  · 10 年前

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

    我得到的结果

    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

    分解的URI

    int(63)int(116)int(121)int(112)int(101)int(61)int(119)int

    编辑的不同解决方案

    $queryString = html_entity_decode($_SERVER['QUERY_STRING']);
    
    1 回复  |  直到 10 年前
        1
  •  3
  •   VolkerK    10 年前
    <?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)浏览器作为输出介质,因此没有看到区别。