2011-07-13 31 views
11

下面的函數採用「test-backup.ini」文件,解析它並通過update_option()方法將值輸入到數據庫中。當文件的值包含感嘆號和等號時,使用parse_ini_file()的語法錯誤

然而,當ini文件中的值包含像exlamation點的特殊字符,等號(=),(和其他人我猜),其在parse_ini_file扔PHP語法錯誤($文件)(!):

語法錯誤,意想不到的! 「」 等等......

例如,假設此內容爲測試backup.ini文件...

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

我在第二行獲得「!」的語法錯誤而對4號線「=」

我應該怎樣把它傳遞給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'; 
} 

?>

回答

18

你應該把雙引號之間的值這種方式:

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

希望這有助於

+0

看起來工作以及單引號(撇號)。 – lolesque