4

我正在尝试将数据存储在文本文件中,例如使用 php 将数组存储到文本文件中,而不是存储到 mysql 数据库中。

例如,这是要存储在文本文件中的数据

name=>john
age=>25
location=>australia

然后将其保存到文本文件后,如何获取内容并使用 php 解析它,因为像 php 可以找到名称、年龄和位置并将其回显(类似于解析数组)

我需要它来将数据存储到文本文件中,以便可以轻松地从其他域访问它,而无需位于同一个域上,连接到数据库,从数据库中获取数据。我正在寻找一个快速的解决方案。:)

我不确定我应该向哪个方向寻找这种功能,希望有人能指出我。

4

6 回答 6

15

存储:
1. 使用serialize()将数组序列化为字符串2. 使用file_put_contents()
将该字符串写入文本文件

读取:
1. 使用file_get_contents读取文本文件
2. 使用unserialize()对之前序列化的数组进行反序列化

serialize() / unserialize()可以替换为json_encode() / json_decode()

于 2012-09-11T08:35:36.860 回答
1

您应该创建一个 uniqid,然后他们将无法访问服务器中的任何其他 txt 文件。

<?php

    #Get a secure filename
    $username = "myUsername"
    $filename = uniqid($username, true).".txt";

    //Create the array
    $userInfo = ["username" => $username, "points" => 0];

    // Store the data
    file_put_contents($filename, serialize($userInfo));

    // How to get the data
    $userInfo = unserialize(file_get_contents($filename));
    print($userInfo["points"]);
    //or
    print($userInfo["username"]);

?>
于 2020-02-15T22:30:50.980 回答
0

您可以使用

如果您想将数组转换为 XML,您可能需要阅读这篇文章:如何将数组转换为 SimpleXML

于 2012-09-11T08:29:52.290 回答
0

这些功能应该做你想做的事:

function storeInTextFile($array,$path) {
    if(file_exists($path)) {
         $handle = fopen($path,'wb');
         fwrite($handle, arrayToString($array));
         fclose($handle);
    }
}

function arrayToString($array) {
    $string = '';
    foreach($array as $key => $value) {
        $string .= "{$key} => {$value}\n";
    }
    return $string;
}

function stringToArray($string) {
    $explodedString = explode('\n',$string);
    $returnArray = array();
    foreach($explodedString as $arrayValue) {
        list($key,$value) = explode(' => ',$arrayValue);
        $returnArray[$key] = $value;
    }

    return $returnArray;
}
于 2012-09-11T08:38:56.607 回答
0

// - 短的 - - - - - - - - - - - - - - - - - - - - - -

$data = [ "a" => "A",  "b" => "B", "c" => "C" ];
  echo '<br> data - array: ';
  var_dump($data);

file_put_contents('db.php', json_encode($data) );

//get
$g = json_decode(file_get_contents('db.php') , 1);  // 1 Array , 0  Object

  echo '<br><hr>short: var_dump($g): ';
  var_dump($g);    

// - 长 - - - - - - - - - - - - - - - - - - - - - -//

$data = [ "a" => "A",  "b" => "B", "c" => "C" ];
  echo '<br> data - array: ';
  var_dump($data);
  echo '<br> json_encode($data): ';

$jdata = json_encode($data);
  var_dump($jdata); 
  echo'<hr>';
file_put_contents('db.php', $jdata);

//get
$jg = file_get_contents('db.php');
  echo ' $jg = file_get_contents(\'db.php\'); $jg : ';
  var_dump($jg);

  echo '<br> json_decode($jg , 1) //1 Array<br>';
$g = json_decode($jg , 1);  
  var_dump($g);

  echo '<br> json_decode($jg , 0)  //0 Object<br>';
$g = json_decode($jg , 0);
  var_dump($g);
于 2017-09-06T18:50:57.873 回答
-1

我制作了一个小型库(~2 KB;<100 行),它允许您这样做:varDx

它具有写入、读取、修改、检查和删除数据的功能。它实现了序列化,因此支持所有数据类型。

以下是您可以使用它的方法:

<?php
require 'varDx.php';
$dx = new \varDx\cDX; //create an object
$dx->def('file.dat'); //define data file

$val1 = "this is a string";
$dx->write('data1', $val1); //writes key to file
echo $dx->read('data1'); //returns key value from file
于 2018-12-30T14:59:43.673 回答