2011-07-13 5 views
11

以下の関数は "test-backup.ini"ファイルを解析し、update_option()メソッドを使用して値をDBに入力します。ファイルの値に感嘆符と等号が含まれていると、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行目に「=」

どのように私はそれが()にupdate_optionに渡されたときに保存されることにこれらの文字に対処するためにparse_ini_fileに渡す前に、$ファイルをフィルタリングする必要があります()を呼び出しますか?

私がこれまでに発見したすべてのはこれです:

文字{} | &〜![()」キーの任意の場所で使用し、に特別な意味を持っていてはいけません。

$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

関連する問題