как получить содержимое из текстового файла в массив

#php #arrays #file-get-contents

#php #массивы #file-get-contents

Вопрос:

По какой-то причине я хочу отделить ключи и значения от ассоциативного массива и прочитать их из текстового файла:

Ниже приведено то, что у меня было

 // translations
$lang = array(
    'All Articles' => 'Alle Artikelen',
    'Page' => 'Pagina',
    'from' => 'van'         
);

 

Теперь я хочу изменить это следующим образом:

 $lang = array(
    file_get_contents("translations.txt"); // read the associative array
);
 

и translations.txt содержит только:

 'All Articles' => 'Alle Artikelen',
'Page' => 'Pagina',
'from' => 'van', 
 

Это не работает. Как я могу считывать пары ключ / значение, когда они хранятся в текстовом файле, как указано выше?

Ответ №1:

Невозможно получить содержимое файла и напрямую назначить массив. Вам нужно проанализировать файл, извлечь строки, затем извлечь ключ и значение.

 $str = file_get_contents("translations.txt");
$lang = [];
foreach (explode("n", $str) as $line)
{
    if (strpos($line, '=>') === false)
    {
        continue;
    }

    list($key, $value) = explode('=>', $line);
    $lang[trim($key,'' ')] = trim(trim($value), '',');
}
 

Используя explode извлечение строк на основе разрыва строки ( n ).

if (strpos($line, '=>') === false) это элемент управления для предотвращения ошибок в пустых строках (обычно в конце файла)


Еще лучше использовать файл json:

translations.json

 {"All Articles":"Alle Artikelen","Page":"Pagina","from":"van"}
 

И php-код:

 $lang = json_decode(file_get_contents(public_path('lang.json')), true);
var_dump($lang);
 

Комментарии:

1. Я не думал о json, но это действительно очень хорошая альтернатива! Thnx

Ответ №2:

Это может быть опасно. Он выполнит код, содержащийся в файле.

 eval(
  '$lang = array('.
    file_get_contents("translations.txt"). // read the associative array
  ');'
);
echo '<pre>';
var_dump($lang);
 

Выходной сигнал:

  array(3) {
  ["All Articles"]=>
  string(14) "Alle Artikelen"
  ["Page"]=>
  string(6) "Pagina"
  ["from"]=>
  string(3) "van"
}
 

Комментарии:

1. eval функция может быть опасной