2014-10-24 8 views
1

У меня есть существующий PHP код для синтаксического анализа через файл конфигурации текст и сохранить каждую строку ввода как пары ключей => значение в массиве, например, текстовый файл:PHP прочитал несколько строк из текстового файла

key1 value1 
key2 value2 
key3 ' 

if (foo) 
    blahblah; 
else 
    blaba; 

'; 

поэтому key1 value1 и key2 value2 могут быть легко проанализированы, но значение key3 на самом деле является одинарной кавычкой нескольких строк кода сценария.

мой существующий код что-то вроде

while (!feof($fd)) { 
    $buffer = fgets($fd, 4096); 
    $temp = explode(' ', $buffer); 
    $array[$temp[0]] = $temp[1]; 
} 

, но как я могу разобрать через Key3 и значение скриптового кода, пересекающие мультилинии с отступом. как только я получу требуемое значение ввода, я хотел бы также иметь возможность выводить в формате HTML, сохраняя формат кода сценария, это кажется нетривиальным, чтобы посмотреть, посмотрел preg_match, чтобы соответствовать нескольким строкам, но я думаю, что fgets получает только одну строку ввод за раз, как я могу использовать preg_match для этого? кто-нибудь понял?

+1

почему бы не хранить фактическое PHP-переменные '$ key1 = 'значение 1 '; '.. then use include \ require –

+0

также обратите внимание, что код сценария может пересекать многие строки со многими идентификаторами, мой пример - просто очень простой пример. Я хотел бы получить общее представление о том, как подойти к этой проблеме. –

+1

обычно у вас нет этой проблемы, потому что ее не так, как вы храните переменные –

ответ

2

Некоторые альтернативы:

  • использование JSON
  • использование XML
  • использование PHP кода непосредственно и include это
  • использование parse_ini_file функция
  • использование serialize
+1

Я голосую за JSON. 'serialize' - еще одна возможность для списка. В этом случае лучше всего катиться. – AbraCadaver

+0

Я не получаю третий вариант, используя PHP-код напрямую и включаю его, обратите внимание, что код сценария в файле конфигурации не является кодом PHP, это какой-то другой код языка сценариев. четвертый вариант parse_ini_file, похоже, не имеет отношения к специальному образцу, указанному здесь –

+1

Мы отталкиваем вас от «специального образца», чтобы использовать другой стандартный формат или метод. – AbraCadaver

Смежные вопросы