代码之家  ›  专栏  ›  技术社区  ›  DonutReply

使用php将变量永久写入php文件

  •  9
  • DonutReply  · 技术社区  · 16 年前

    我需要能够永久改变变量在一个php文件使用php。

    我正在使用codeigniter和language helper创建一个多语言站点,它以以下格式将文本存储在php文件的变量中: $lang['title'] = "Stuff";

    干杯

    6 回复  |  直到 16 年前
        1
  •  7
  •   Chris    16 年前

    如果它只是一个你正在处理的数组,你可能需要考虑。 var_export . 它将以有效PHP代码的格式打印或返回表达式。

    如果你有一个包含 $lang['title'] = "Stuff"; 行,你可以做一些类似的事情:

    include('language_foo.php');
    $lang['title2'] = 'stuff2';
    $data = '$lang = ' . var_export($lang, true) . ';';
    file_put_contents('language_foo.php', '<?PHP ' . $data . ' ?>');
    

    serialize() d等)。

        2
  •  1
  •   Álvaro González    16 年前

    将数据存储到其他地方(例如,数据库)并编写一个简单的脚本来生成*.php文件看起来要容易得多,上面有这样的注释:

    #
    # THIS FILE IS AUTOGENERATED - DO NOT EDIT
    #
    
        3
  •  0
  •   pinaki    16 年前

    我曾经遇到过类似的问题。我通过简单地添加一个smarty模板来修复它。我的做法如下:

    1. 从文件中读取数组
    2. 将数组传递给smarty
    3. 替换文件

    如果这有帮助,请告诉我。

        4
  •  0
  •   Pekka    16 年前

    • 你需要一个人类可读和人类可编辑的形式字典文件(没有序列化等)

    • 字典数组是一维关联数组:

    我会的

    1. Include()函数中的字典文件

    2. $lang 数组(添加单词、删除单词、更改单词)

    3. $朗

      foreach ($lang as $key => $value)
       fwrite ($file, "\$lang['$key'] = '$value';\n";
      

    当然,这是一种极其有限的方法。我真的很想看看是否有一个真正的“PHP源代码解析器,转换器和作家”左右。这应该可以使用 tokenizer

        5
  •  0
  •   Konrad Neuwirth    16 年前

    如果它也是关于一个真正的多语言站点,那么您可能会喜欢研究PHP的gettext扩展。它可以追溯到一个库,这个库多年来一直用于本地化内容,而在那里,用来跟踪翻译文件的工具已经存在了差不多相当长的时间。这也使得在以后的产品版本中支持所有语言变得更加有趣。

    在其他新闻中,我不会使用数组,而是使用适当的定义,这样您就有了一个文件

    switch ($lang) {
    case 'de':
      define('HELLO','Hallo.'); 
      define('BYE','Auf wiedersehen.'); 
    break;
    case 'fr':
       define('HELLO','Bonjour'); 
       define('BYE','Au revoir.'); 
       break;
    case 'en':
    default:
       define ('HELLO','Hello.'); 
       define ('BYE','Bye.'); 
    }
    

        6
  •  0
  •   Tom Haigh    16 年前

    Pear Config 将允许您使用“PHPArray”容器读写包含设置的PHP文件。我发现生成的PHP比从 var_export()

    推荐文章