2015-03-31 86 views
-1

我的文件看起来像这样。我需要通过file_put_contents追加一些新的数组键。如何在特定位置将文本插入文件?

<?php 
    $translation = array(
     'Wyposażenie' => 'Equipment', 
    ); 
?> 

我不知道该怎么做。我唯一知道的是我必须使用file_put_contents($file, "'test' => 'new value',", FILE_APPEND | LOCK_EX);,但它会在文件末尾添加新信息。如何在最后一个数组键之后追加我的新信息。要得到的东西是:

<?php 
    $translation = array(
     'Wyposażenie' => 'Equipment', 
     'test' => 'new value', 
    ); 
?> 
+1

这不是一个数组。这是*文字*。将内容添加到数组很容易。把它放在随机文本中不是。 – 2015-03-31 20:45:11

+0

另外,也许使用'json_encode'。但除此之外,修改数组和'var_export'。 – AbraCadaver 2015-03-31 20:48:28

+0

_ @约翰孔德_你想告诉我,这是不可能的? :)那么把它放到一个字符串中,删除:'); ?>',然后将数据附加到字符串,然后再次添加'); ?>'最后保存? – 2015-03-31 20:53:43

回答

0

我写这是我的自我。这里是我的代码:

public static function l($string) 
{  
    $string = trim(preg_replace('/\s+/', ' ', $string)); 

    if($_SESSION['lang']=='default') 
    {  
     return $string; 
    } 
    else 
    { 
     $file = 'translations/'.$_SESSION['lang'].'.php'; 

     if (file_exists($file)) 
     { 
      require($file); 

      $search = array_key_exists($string, $translation); 

      if($search && $translation[$string] != ' ') 
      { 
       # ZNALAZŁ TŁUMACZENIE 
       return $translation[$string]; 
      } 
      else 
      { 
       if(!$search) 
       { 
        # NIE ZNALAZŁ TŁUMACZENIA 
        $translation[$string] = ' '; 

        $serialized = "<?php\n\$translation = array(\n\n\n"; 
        while ($array = current($translation)) { 

         if(key($translation)) 
         { 
          $serialized .= "'".key($translation)."'\n=>\n'".current($translation)."',\n\n\n"; 
         } 

         next($translation); 
        } 
        $serialized .= ");\n?>"; 

        file_put_contents($file, $serialized); 
       } 
       if($translation[$string] == ' ') 
       { 
        # ZNALAZŁ PUSTE TŁUMACZENIE 
       } 

       return $string; 
      } 
     } 
     else 
     { 
      return $string; 
     } 
    } 
} 
2

正如在评论中提到别人,这可以更好的方式,但只是针对这种情况在这里使用JSON是你如何能做到这一点做到:

<?php 
$read = file_get_contents("i.txt"); 

$delete = strrpos($read,");",-1); 

$read = substr($read,0,$delete); 

$new_value = "'test' => 'new value',"; 

$read .= "\r\n\$new_value \r\n);\r\n ?>"; 

file_put_contents('i.txt',$read); 

?> 
1

我很无聊。这不会覆盖存在的键。要覆盖,扭转阵列中array_merge()

function add_to_trans($file, $array) { 
    include($file); 
    $result = array_merge($translation, $array); 
    file_put_contents($file, '$translation = ' . var_export($result, true)); 
} 

$new_trans = array('test' => 'new value'); 
add_to_trans('path/to/file.php', $new_trans); 

但你应该重新考虑这一点,将文件保存在一个json_encode()阵列并重新读取出来。

相关问题