【问题标题】:store data into a text file using php?使用 php 将数据存储到文本文件中?
【发布时间】:2012-09-11 08:22:48
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 如果必须的话,可能是 xml,但数据库是最好的选择
  • 哪个更快? xml还是数据库?
  • json_encodejson_decode 应该值得一试。
  • 请告诉我们您为什么需要存储和读取数据以及您不想使用数据库的原因。那么我们可能会给出一个更合适的解决方案。
  • 我需要它来将数据存储到文本文件中,这样就可以轻松地从其他域访问它,而无需在同一个域上,连接到数据库,从数据库中获取数据。我正在寻找一个快速的解决方案。 :)

标签: php


【解决方案1】:

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

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

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

【讨论】:

  • 我喜欢这种对一级算法的前瞻性。
【解决方案2】:

你应该创建一个 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"]);

?>

【讨论】:

    【解决方案3】:

    你可以使用

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

    【讨论】:

      【解决方案4】:

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

      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;
      }
      

      【讨论】:

        【解决方案5】:

        //-- 短 ------------------------------ -

        $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);
        

        【讨论】:

          【解决方案6】:

          我创建了一个小型库(~2 KB;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
          

          【讨论】:

            猜你喜欢
            • 2015-03-03
            • 1970-01-01
            • 2020-07-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-09-20
            • 2023-03-15
            相关资源
            最近更新 更多