Есть функция которая считывает текст по коду с ini файл:
public function alert ($name) {
$this->data = parse_ini_file($this->directory.'alert.ini');
return $this->data[$name];
}
Содержимое ini файла:
0001 = danger
0002 = online
0003 = offline
0004 = checked="checked"
Чтение и вывод происходит так:
echo $text->alert('0004');
Проблема:
Как можете заметить в четвертой строке ini файла есть кавычки и тире. При ее вызове выдает ошибку:
syntax error, unexpected '=' in
Задача:
Можно ли как это экранировать такие символы или обработать функцией?
Прошу помощи в реализации!
Можно ли как это экранировать такие символы или обработать функцией?
Примечание из оф.документации:
Если значение в ini-файле содержит прочие символы, кроме букв и цифр, оно должно заключаться в двойные кавычки (").
Исходя из этого, можно дописать метод-обработчик, который будет предварительно читать ini-файл, проверять символы и перезаписывать. См. пример:
class Foo
{
private $ini;
private $data = [];
public function __construct(string $filename = 'alert.ini')
{
$this->ini = __DIR__ . DIRECTORY_SEPARATOR . $filename;
$this->escape_characters_ini_file();
}
private function escape_characters_ini_file()
{
file_put_contents($this->ini, join(PHP_EOL, array_map(function($i){
[$name, $value] = explode(' = ', $i, 2);
return $name . ' = ' . preg_replace('~(?<!")[^\pL\d\s"]~', '"$0"', $value);
}, file($this->ini, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES))));
}
public function alert($name)
{
$this->data = parse_ini_file($this->ini);
return $this->data[$name];
}
}
$text = new Foo();
echo $text->alert('0004');
Или используйте вместо parse_ini_file() другую функцию для чтения файла.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Требуется загрузить изображение в MySQL через форму :
Как изменить в wordpress автора записи если пользователь состоит в группе editorКак отобразить у него это поле?