php 二进制包,用php写出文件的二进制形式

本文档探讨了如何使用PHP来显示文件的二进制内容,类似于Linux命令xxd的功能。作者遇到的问题是代码显示的是字符本身而非二进制表示。通过尝试和修改,使用ord()函数获取字符ASCII码并转换为二进制,但结果显示不完全正确。最终解决方案是将字符的ASCII码转换为二进制并以字符串形式输出。
摘要由CSDN通过智能技术生成

xxd filename

可以将一个文件的二进制形式显示在终端,无需考虑文件是什么形式的编码。

如何用php实现同样的功能?

1.fopen

2.fread

3.ehco不行,不能显示文本的二进制,显示的是文本,请问,这里如何做?

我写了一段代码

$target="test.txt";

$file_handle = fopen($target, "rb");

while (!feof($file_handle)) {

$byte = fread($file_handle,1);

echo $byte;

}

fclose($file_handle );

?>

发现不行,显示的是字符本身,不是字符的二进制表达。

预计这个ehco要改,请问,如何修改。

fwrite(STDOUT,$byte); 替换 echo $byte; 也不行。

修改了一下,离成功不远了。

function parse($target){

$file_handle = fopen($target, "rb");

while (!feof($file_handle)) {

$byte = fread($file_handle,1);

echo base_convert(ord($byte),10,2);

}

fclose($file_handle );

}

parse('test.txt');

?>

用一个只包含换行键的文件测试

xxd -b ./test.txt

0000000: 00001010

我的程序运行结果是:

10100

以下是一个简单的火车头采集器,每次采集时会随机更换User-Agent。 ``` <?php // 设置采集目标URL $url = "http://www.example.com/"; // 设置User-Agent列表 $userAgents = array( "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko", "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0", ); // 随机选择一个User-Agent $userAgent = $userAgents[array_rand($userAgents)]; // 设置HTTP请求头部信息 $headers = array( "User-Agent: " . $userAgent, "Accept-Language: en-US,en;q=0.5", "Accept-Encoding: gzip, deflate", "Connection: keep-alive", "Upgrade-Insecure-Requests: 1", ); // 初始化HTTP请求 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 发送HTTP请求并获取响应 $response = curl_exec($ch); // 输出响应 echo $response; // 关闭HTTP请求 curl_close($ch); ?> ``` 如果需要定时更换User-Agent,可以使用PHP的定时任务工具(如cron)来实现。例如每小时更换一次User-Agent,可以设置一个定时任务,每小时执行一次以下代码: ``` <?php // 设置User-Agent列表 $userAgents = array( "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko", "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0", ); // 随机选择一个User-Agent $userAgent = $userAgents[array_rand($userAgents)]; // 保存User-Agent到文件 file_put_contents("useragent.txt", $userAgent); ?> ``` 然后在采集器中读取保存的User-Agent: ``` <?php // 从文件中读取User-Agent $userAgent = file_get_contents("useragent.txt"); // 设置HTTP请求头部信息 $headers = array( "User-Agent: " . $userAgent, "Accept-Language: en-US,en;q=0.5", "Accept-Encoding: gzip, deflate", "Connection: keep-alive", "Upgrade-Insecure-Requests: 1", ); // ... ?> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值