PHP关于获取二进制数据流转换为文件的方法

PHP关于获取二进制数据流转换为文件的方法,第1张

$content = $_POST['data']

$fp = fopen('/tmp/newfile.bin','w')

fwrite($fp,$content)

以上例慧羡子是在data参数上传二进制,并档首保存到/tmp/newfile.bin中,解析json用json_decode,然后把前蠢拍二进制的那个值赋给content就可以

php接收二进制文件怎么替换里面的内容

php接收二进制文件如下:

<?php

header('Content-type: text/htmlcharset=utf-8')

error_reporting(0)

$filename = $_GET["filename"]

$filesize = $_GET["filesize"]

$xmlstr = $GLOBALS[HTTP_RAW_POST_DATA]//$_POST["data"]//

if(empty($xmlstr)) $xmlstr = file_get_contents('php://input')

$raw = $xmlstr//得到post过来的二进制原始数据

$file = fopen("./upload/".$filename,"w")//打开文件准备写入

fwrite($file,$raw)//写入

fclose($file)//关闭

?>

接收的二进制文件中非标准字符(>0x7F)的字节被替换为三个字节,比如E2替换为EF 9F A2

现在我想在Php接收到文件之后还原回去,把EF 9F A2替换为E2,请问这个怎么实现?

非常感谢!

PHP 二进制老敬

------解决方案早做--------------------

他的数据转换规则是这样的:

文件头不变,文件头多长不清楚,图上到0050h都一样的

<=7F的字节,因为utf-8也一样,可以认为也转换了utf-8

>=80的字节,高位加上F7,再转utf-8,例如E2就变成F7E2然后转utf-8成为EF 9F A2

至少他图中E2/FB/91/B2/81...都满足这个规则

------解决方案--------------------

本帖最后由 xuzuning 于 2013-05-02 15:35:02 编辑

用正则可这样写

假定数陆含衡据已把存在变量 $s 中,则

$s = preg_replace_callback('/[\xef]../', 'foo', $s)

function foo($r) {

$c = (ord($r[0]{1}) &0x03) <<6

$c += (ord($r[0]{2}) &0x3f)

return chr($c)

}

需要准备的材料分别是:电脑、php编辑器、浏览器。

1、首先,打开php编辑器,新建php文件,例如丛亩:index.php。

2、以二进搏旅制数1110101为例,在index.php中,输入代码:$a = 0b1110101echo $a。

3、浏览器运行index.php页面,此时会看到二进基郑凳制数1110101被成功表示,并以十进制形式打印了出来。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12264278.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存