php如何按照字节 读取input

十一文 2011-06-18 01:16:46

因为别人post过来的数据
前4个字节是 个数字

4个字节以后是 字符串

再后面4个字节又是别的请问
咋么读取啊?
...全文
263 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LuciferStar 2011-06-18
  • 打赏
  • 举报
回复
$_POST['id'][0]
$_POST['id'][1]
$_POST['id'][2]
$_POST['id'][3]

你循环遍历就可以了。
LuciferStar 2011-06-18
  • 打赏
  • 举报
回复
POST就是字符串,脚本的限制,用户不可能持续不间断地将数据以流的方式发送到服务器。
xuzuning 2011-06-18
  • 打赏
  • 举报
回复
$p = unpack('n', $v);

比如 4个字节是 十六进制 00 00 00 30 表示的48
这是高位在前的长整型
十一文 2011-06-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xuzuning 的回复:]

那有什么区别呢?
只不过将 $_POST['变量名'] 换成 file_get_contents('http://input')

如果已知各段的数据类型,可用 unpack 直接转换
[/Quote]

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

我每次转换的都不对
xuzuning 2011-06-18
  • 打赏
  • 举报
回复
那有什么区别呢?
只不过将 $_POST['变量名'] 换成 file_get_contents('http://input')

如果已知各段的数据类型,可用 unpack 直接转换
十一文 2011-06-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xuzuning 的回复:]

如果按你说的是每段定长的话(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, ……
[/Quote]
关键问题在于 别人给我的不是字符串啊
是二进制流

得用php://input
这样取
xuzuning 2011-06-18
  • 打赏
  • 举报
回复
如果按你说的是每段定长的话(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];
}


wslimu 2011-06-18
  • 打赏
  • 举报
回复
试试 正则

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧