2011-07-13 6 views
11

La función siguiente toma el archivo "test-backup.ini", lo analiza e introduce los valores en el DB mediante el método update_option().Error de sintaxis con parse_ini_file() cuando el valor del archivo contiene signos de exclamación e iguales

Sin embargo, cuando los valores del archivo INI contienen caracteres especiales como puntos exlamation y signos de igual (=) (y otros Conjeturaría), su lanzan un error de sintaxis PHP en parse_ini_file (archivo $) (!):

de error de sintaxis, inesperada "!", etc ...

Por ejemplo, dado este contenido que el archivo de prueba-backup.ini ...

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

I obtener errores de sintaxis en la línea 2 para el "!" y en la línea 4 para el "="

Cómo debería filtrar el archivo $ antes de pasarla a parse_ini_file() para hacer frente a estos personajes a la que se conservan cuando se pasa a la update_option() llamar?

Todo lo que he encontrado hasta ahora es la siguiente:

caracteres {} | & ~! [()" No debe ser utilizado en cualquier parte del clave y tienen un significado especial en el valor .

$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'; 
} 

?>

Respuesta

18

Usted debe poner sus valores entre comillas dobles de esta manera:

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

esperanza esto ayuda

+0

parece funcionar también con comillas simples (apóstrofes). – lolesque

Cuestiones relacionadas