Intereting Posts
Добавить сообщение проверки в fieldset вместо js popup Защищенный PHP-класс, соединяющийся с MySQL? Предупреждение: mail () : Не удалось подключиться к почтовому серверу Лучшее решение для удаления повторяющихся значений из массива без учета регистра Как обрабатывать изображения, отправленные мобильным устройством? Проверьте, может ли пользователь facebook отправлять сообщения на стене своих друзей или нет codeigniter игнорирует пользовательскую функцию проверки Как установить имя хоста с помощью php curl для определенного ip Функция успеха Ajax –enable-phar = shared Нужно ли перекомпилировать PHP для установки Composer? Array push как первый индекс PHP Регулярное выражение для замены относительной ссылки с корневой относительной ссылкой php удалить «пустые» значения в массиве Замена обратной косой черты с помощью другого символа в PHP Выбор поплавка в MySQL

Постоянно писать переменные в php-файл с php

Мне нужно иметь возможность постоянно изменять переменные в php-файле, используя php.

Я создаю многоязычный сайт с использованием codeigniter и используя помощник языка, который хранит текст в php-файлах в переменных в этом формате: $lang['title'] = "Stuff";

Мне удалось получить доступ к обычным текстам файлов, используя fopen () и т. Д., И мне кажется, что я мог бы, вероятно, найти области, которые я хочу редактировать, с помощью регулярных выражений и переписать файл после внесения изменений, но это кажется немного взломанным.

Есть ли простой способ редактировать эти переменные на постоянной основе с помощью php?

ура

Solutions Collecting From Web of "Постоянно писать переменные в php-файл с php"

Если это всего лишь массив, с которым вы имеете дело, вы можете рассмотреть var_export . Он будет распечатывать или возвращать выражение в формате, который является допустимым кодом PHP.

Итак, если у вас есть language_foo.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 . ' ?>'); в include('language_foo.php'); $lang['title2'] = 'stuff2'; $data = '$lang = ' . var_export($lang, true) . ';'; file_put_contents('language_foo.php', '<?PHP ' . $data . ' ?>'); 

Кроме того, если вы не захотите вручную редактировать их в будущем, вам следует рассмотреть возможность хранения данных по-другому (например, в базе данных или serialize() 'd и т. Д. И т. Д.).

Легче хранить данные где-то в другом месте (например, базу данных) и писать простой скрипт для генерации * .php-файлов с этим комментарием сверху:

 # # THIS FILE IS AUTOGENERATED - DO NOT EDIT # 

Однажды я столкнулся с подобной проблемой. Я исправил его, просто добавив шаблон smarty. То, как я это делал, было следующим:

  1. Прочитайте массив из файла
  2. Добавить в массив
  3. Передайте массив умным
  4. Перебирайте массив в smarty и сгенерируйте файл с помощью шаблона (таким образом, у вас есть полный контроль, который может отсутствовать в reg-ex)
  5. Заменить файл

Позвольте мне знать, если это помогает.

При условии, что

  • Вам нужен файл словаря в удобной для человека форме и редактируемой человеком форме (без сериализации и т. Д.),

  • Массив словаря является одномерным ассоциативным массивом:

я бы

  1. Включить () файл словаря внутри функции

  2. Выполняйте все необходимые операции над массивом $lang (добавьте слова, удалите слова, измените слова)

  3. Напишите массив $lang обратно в файл, используя простой цикл:

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

Конечно, это очень ограниченный подход. Мне было бы очень интересно узнать, есть ли подлинный «парсер, исходник и сценарист PHP». Это должно быть возможно, используя функции токенизатора .

Если это также действительно многоязычный сайт, вам может понравиться расширение gettext PHP. Он возвращается к библиотеке, которая использовалась для локализации материалов в течение многих лет, и где инструменты, чтобы идти в ногу с файлами перевода, были вокруг почти так же долго. Это также облегчает поддержку всех языков в последующих версиях продукта.

В других новостях я бы не использовал массив, а скорее соответствующие определения, так что у вас есть файл

 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.'); } 

И я также автоматически создавал бы это из базы данных, если техническое обслуживание становится хлопот.

Pear Config позволит вам читать и писать файлы PHP, содержащие настройки, используя свой контейнер «PHPArray». Я обнаружил, что сгенерированный PHP более читабельен, чем с var_export()