2011-07-13 7 views
11

Aşağıdaki işlev "test-backup.ini" dosyasını alır, ayrıştırır ve değerleri update_option() yöntemi aracılığıyla DB'ye girer.Dosyanın değeri ünlem işareti ve eşittir işaretleri içerdiğinde parse_ini_file() yöntemiyle yapılan sözdizimi hatası

Ancak ini dosyasının değerleri exlamation noktaları gibi özel karakterleri ve eşittir işareti (=) (ve diğerlerini tahmin ediyorum) onun parse_ini_file bir PHP sözdizimi hatası atma, ($ dosya) içerdiğinde (!):

sözdizimi hatası, beklenmedik "!", vs ...

test backup.ini dosyası olarak bu içeriğin verilen örnek için

...

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

ben "!" için satır 2'de sözdizimi hataları olsun ve için 4. hatta "="

Nasıl bu() update_option geçirilen zaman korunmuş olduğunu bu karakterler ile başa parse_ini_file geçirmeden önce $ dosyası filtre edilmelidir() diyoruz? |

Karakterler {}:

Ben şimdiye kadar tespit ettik Bütün bu & ~! [()" Her yerde anahtar kullanılan ve değerinde bir özel anlama sahip olmamalıdır.

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

?>

cevap

18
Sen çift tırnak arasına değerlerinizi koymalıyız

Bu yol:

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

Umut bu

+0

iş gibi gözüküyor yardımcı olur tek tırnaklı (kesme işaretleri). – lolesque

İlgili konular