Синтаксическая ошибка с использованием parse ini file (), когда значение файла содержит восклицательные знаки и знаки равенства

функция ниже принимает " тест-резервное копирование.ini", анализирует его и вводит значения в БД с помощью метода update_option ().

однако, когда в ini-файл значение содержит специальные символы, такие как exlamation очков (!) и равные знаки ( = ) (и другие, я бы предположил), Его бросая синтаксическую ошибку PHP в parse_ini_file ($file):

синтаксическая ошибка, неожиданный "!", п...

например, учитывая этот контент в качестве тестового резервного копирования.Ини файл...

[settings]
line1 = asc
line2 = /*.blog ul li {margin-bottom:0 !important;}*/
line3 = true
line4 = <meta name="google-site-verification" content="" />

я получаю синтаксические ошибки на line2 для "!- а в четвертой строке -"="

Как я должен фильтровать файл $перед передачей его в parse_ini_file (), чтобы иметь дело с этими символами, чтобы они сохранялись при передаче вызову update_option ()?

все, что я нашел до сих пор это:

символы {}|&~![()" не должно использоваться нигде в ключ и особое значение в стоимостью.

$file = WP_PLUGIN_DIR.'/test/test-backup.ini';

if (file_exists($file) && is_readable($file))
{       
    $ini_array = parse_ini_file($file); //errors when value contains =, !, etc
    foreach ($ini_array as $key=>$value) {
        update_option($key, $value); 
    } 
    echo 'The settings have been saved';
}
else
{
    echo 'alternate response here';
}

?>

1 ответов


вы должны поместить свои значения между двойными кавычками следующим образом:

line1 = asc
line2 = "/*.blog ul li {margin-bottom:0 !important;}*/"
line3 = true
line4 = "<meta name=\"google-site-verification\" content=\"\" />"

надеюсь, что это помогает