如何在文件的特定位置插入文本


How to insert text into file in specific place?

我的文件如下所示。我需要通过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',
    );
?>

正如其他人在评论中提到的,使用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);
?>

我很无聊。这不会覆盖现有的密钥。要覆盖,请反转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()数组,然后将其读出来。

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

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