php - 将 PHP 数组写入文件生成二进制文件而不是纯文本

标签 php

我正在尝试以纯文本(非二进制)的形式将数组或对象写入文件,但是每当我遍历数组并查看文件时,我都会收到二进制文件。

$this->user$this->temp_files['in_file_name'] 被传递到函数之前。

$user_array = (array)$this->user;
$data = "";

foreach ($user_array as $key => $value) {
    $data .= "$key $value\n";
}

file_put_contents($this->temp_files['in_file_name'], $data);

如果我只是将一个字符串传递给 $data,它会以纯文本形式写入文件,但是当我遍历对象或数组时,我会收到二进制文件。有没有办法在文件中获取此数组的纯文本版本?

$this->user 是一个数据库行,作为来自 Ion_Auth 的对象,调用者:

$this->user =$this->ion_auth->user($this->user_id)->row();

这是文件输出的一部分

4461 7465 2054 7565 7364 6179 204f 6374 6f62 6572 2033 302c 2032 3031 3269 6420 320a 6970 5f61 6464 7265 7373 207f 0000 010a 7573 6572 6e61 6d65 2062 7261 6e64 6f6e 2062 6f73 7765 6c6c 0a70 6173 7377 6f72 6420 6539 3936 3630 6665 3039 3535 6663 3862 3431 6639 3838 3066 3639 6131 6664 6635

用户数组的var_dump是:(出于数据安全原因,我更改了一些值)

array (size=22)
  'id' => string '2' (length=1)
  'ip_address' => string '��' (length=4)
  'username' => string 'brandon' (length=15)
  'password' => string 'changed' (length=40)
  'salt' => null
  'email' => string 'brandon@changed.net' (length=27)
  'activation_code' => null
  'forgotten_password_code' => null
  'forgotten_password_time' => null
  'remember_code' => string 'changed' (length=40)
  'created_on' => string '1337702147' (length=10)
  'last_login' => string '1351607850' (length=10)
  'active' => string '1' (length=1)
  'first_name' => string 'Brandon' (length=7)
  'last_name' => string 'changed' (length=7)
  'company' => string 'changed' (length=17)
  'phone' => string '804-814-changed' (length=12)
  'store' => string 'mechanicsville' (length=14)
  'delivery' => string '1' (length=1)
  'receiveEmails' => string '1' (length=1)
  'customerType' => string 'business' (length=8)
  'user_id' => string '2' (length=1)

如果我对文件执行 file_get_contents,它可以正确回显,但我希望文件存储为纯文本。

最佳答案

解码您发布的十六进制字节会显示正确的数据。所以我会猜测:PHP 正在完美地编写文件,但是 IP 地址 (127.0.0.1) 中的原始空字节混淆了您用来打开文件的操作系统或编辑器,认为这不是一个文本文件,因此它会在十六进制编辑器 View 中为您显示它。尝试在不同的编辑器中打开文件,或将 'ip_address' 字段保存为文本。

关于php - 将 PHP 数组写入文件生成二进制文件而不是纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13143881/

相关文章:

php - 选中另一个时取消选中一个复选框

php - 获取整个页面内容并显示在页眉中

php - 如何检测字符串中是否包含 UTF-8 字符?

php - 如何循环遍历任意数量的子数组?

php - 插入批量记录时脚本过期

php - 我想在我的网站上添加一些检测;这些是好的选择吗?

php - 从 Mysql DB 获取的结果留在页面上

php - 最大连接数(Debian、phpmyadmin、apache)

javascript - $this 在 AJAX 请求后失去焦点

php - 如何检查数组(php)中的任何项目是否在表(mysql)中