Ошибка парсинга ini-файла: unexpected TC_CONSTANT

Ошибка парсинга ini-файла: unexpected TC_CONSTANT
Если Вы нашли эту статью через поисковые системы, то у Вас наверняка проблема с парсингом ini-файла. Я долго думал к какой категории отнести эту статью: Zend Framework или PHP.
Недавно передо мной стояла задача: добавить мультиязычность (возможность использовать 2 и более языка) в один из проектов на Zend Framework. А для хранения строк я решил воспользоваться ini-адаптером (т.е. хранить данные в ini файлах). Но этому я планирую посвятить отдельную статью, да и все таки ошибка, которая возникла, относится непосредственно к PHP
Warning: syntax error, unexpected TC_CONSTANT in /home/stafox/*/application/languages/en.ini on line 3

Вот вид того самого en.ini:

home = home
downloads = downloads
no_limits = no limits
link = link
...

Ну вот вообще не нравилась эта третья строка, а точнее слово no, т.к. если его убрать, все отлично. Чтобы выяснить в чем проблема — обратимся к документации PHP

Замечание:
Существует зарезервированные слова, которые нельзя использовать в качестве ключей в ini-файлах. Такими словами являются: null, yes, no, true, false, on, off, none. Значения null, no и false преобразуются в «», yes и true преобразуются в 1. Символы

?{}|&~![()^"

не должны использоваться в ключах и иметь какой-либо особый смысл в значениях.

Таким образом, получается, что такие слова как no, null и т.д. использовать нельзя. Что же делать, спросите Вы, если это необходимо? Для этого обратим внимание на первое замечание.

Замечание:
Если значение в ini-файле содержит прочие символы, кроме букв и цифр, оно должно заключаться в двойные кавычки («).

Т.е. наш файл нужно привести к вот такому виду:

home = "home"
downloads = "downloads"
no_limits = "no limits"
link = "link"
...
И все будет работать как надо!

Stas Kuryan

Web developer. Перфекционист в написании кода.

2 комментария

  1. Михаил     

    Спасибо, нигде не находил ответа.

  2. Antones     

    Помогло!
    а то сайт выглядел пустым и без текста 😀 скрипт ругался что ошибка есть

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *