2013-02-18 2 views
0

В PHP я загружаю конфигурационный файл, написанный в JSON. См. Выдержку:Полуколона отсутствует после json_decode()?

"test":{ 
    "regexp":"^var1=([A-Za-z0-9_]+)(;var2=([0-9]+))?(;var3=([0-9]+))?$" 
} 

Обратите внимание на полуколоны!

Когда я загружаю это в PHP 5.3.3 с помощью json_decode() следующий возвращается в виде строки:

^var1=([A-Za-z0-9_]+)(var2=([0-9]+))?(var3=([0-9]+))?$ 

Кто-нибудь знает, что случилось с моим полу-колонов? Они очень важны!

+0

Что произойдет, если вы кодирования (json_encode), например: массив ('тест' => 'испытания; испытание'); ? – tobspr

+1

Кажется, что отлично работает при инкапсуляции в '{}': http://codepad.viper-7.com/ZBe0mz – jeroen

ответ

1

Использование PHP 5.3.21 это работает довольно хорошо Вот мой код

<?php 
    $json = '{"test":{"regexp":"^var1=([A-Za-z0-9_]+)(;var2=([0-9]+))?(;var3=([0-9]+))?$"}}'; 
    $tested=json_decode($json, true); 
    echo $tested["test"]["regexp"]; 
?> 

И мой выход, как ожидается,

^var1=([A-Za-z0-9_]+)(;var2=([0-9]+))?(;var3=([0-9]+))?$ 
+0

Спасибо за исключение ошибки в функциях 'json_ *'. Оглянувшись на мой код, мне нужно скорее застенчиво признать, что я нашел румянец 'str_replace (';', null, $ json)', который удалял их. – Marc

+0

Без проблем, рад, что я помог – Theodore

Смежные вопросы