Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php将变量永久写入php文件_Php_Codeigniter - Fatal编程技术网

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

使用php将变量永久写入php文件,php,codeigniter,Php,Codeigniter,我需要能够使用php永久更改php文件中的变量 我正在使用codeigniter和language helper创建一个多语言网站,该网站将文本以以下格式存储在php文件中: $lang['title']=“Stuff” 我已经能够使用fopen()等访问文件的纯文本,我似乎可以用正则表达式找到我想要编辑的区域,并在进行更改后重写文件,但这似乎有点粗糙 是否有任何简单的方法可以使用php永久编辑这些变量 干杯我曾经遇到过类似的问题。我通过简单地添加一个smarty模板来修复它。我的做法如下: 从

我需要能够使用php永久更改php文件中的变量

我正在使用codeigniter和language helper创建一个多语言网站,该网站将文本以以下格式存储在php文件中:
$lang['title']=“Stuff”

我已经能够使用fopen()等访问文件的纯文本,我似乎可以用正则表达式找到我想要编辑的区域,并在进行更改后重写文件,但这似乎有点粗糙

是否有任何简单的方法可以使用php永久编辑这些变量


干杯

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

  • 从文件中读取数组
  • 添加到数组中
  • 将阵列传递给smarty
  • 在smarty中循环数组并使用模板生成文件(这样您就拥有了完全控制权,这在reg ex中可能会丢失)
  • 替换文件

  • 让我知道这是否有帮助。

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

    #
    # THIS FILE IS AUTOGENERATED - DO NOT EDIT
    #
    

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

    因此,如果您有一个包含大量
    $lang['title']=“Stuff”的语言_foo.php行,您可以执行以下操作:

    include('language_foo.php');
    $lang['title2'] = 'stuff2';
    $data = '$lang = ' . var_export($lang, true) . ';';
    file_put_contents('language_foo.php', '<?PHP ' . $data . ' ?>');
    
    include('language_foo.php');
    $lang['title2']='stuff2';
    $data='$lang='。var_导出($lang,true);
    文件内容('language\u foo.php','';
    

    另一方面,如果将来不想手工编辑它们,则应该考虑以不同的方式存储数据(例如在数据库中,或者<代码>序列化)(Do等)。

    < P>假设

    • 您需要一个可读且可编辑的字典文件(无序列化等)

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

    我会的

  • Include()函数中的字典文件

  • $lang
    数组执行所有必要的操作(添加单词、删除单词、更改单词)

  • 使用简单循环将
    $lang
    数组写回文件:

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

  • 当然,这是一种极其有限的方法。我真的很想看看是否有真正的“PHP源代码解析器、转换器和编写器”。使用这些函数应该可以做到这一点。

    如果它也是关于一个真正的多语言站点,您可能会喜欢研究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.'); 
    }
    

    如果维护变得麻烦的话,我也会从数据库自动生成

    将允许您使用其“PHPArray”容器读取和写入包含设置的PHP文件。我发现生成的PHP比从
    var\u export()

    生成的PHP可读性更强,这是个好问题!虽然有标记器,但它只会分解PHP代码,无法将其重新组合在一起。有兴趣看看会发生什么。你到底想做什么?为什么需要将语言动态写入CodeIgniter语言文件?如果这是一个CMS,那么扩展语言库以与DB接口肯定是一个更好的主意?+1用于var_导出。我不知道这会以完美的格式生成数据。如果你只想写,那就太完美了。-1投票支持错误的答案-你应该使用“序列化”-我投票赞成不指出自我修改代码会导致灾难。