因为别人post过来的数据 
前4个字节是 个数字4个字节以后是 字符串再后面4个字节又是别的请问 
咋么读取啊?

解决方案 »

  1.   

    如果按你说的是每段定长的话(4个字节)
    $ar = str_split($_POST['变量名'], 4);如果是每段不定长的
    比如 1,2,3,4,5

    $mask = array(1,2,3,4,5);
    $s = $_POST['变量名'];
    $n = 0;
    for($i=0; $i<strlen($s); $i++) {
      $ar[] = substr($s, $n, $mask[$i]);
      $n += $mask[$i];
    }
      

  2.   

    关键问题在于 别人给我的不是字符串啊
    是二进制流得用php://input
    这样取
      

  3.   

    那有什么区别呢?
    只不过将 $_POST['变量名'] 换成 file_get_contents('http://input')如果已知各段的数据类型,可用 unpack 直接转换
      

  4.   


    比如 4个字节是 十六进制 00 00 00 30 表示的48
    unpack 怎么转换啊?我每次转换的都不对
      

  5.   

    $p = unpack('n', $v);比如 4个字节是 十六进制 00 00 00 30 表示的48
    这是高位在前的长整型
      

  6.   

    POST就是字符串,脚本的限制,用户不可能持续不间断地将数据以流的方式发送到服务器。
      

  7.   

    $_POST['id'][0]
    $_POST['id'][1]
    $_POST['id'][2]
    $_POST['id'][3]你循环遍历就可以了。