Вместо почерк своей строки JSON, вы должны абсолютно использовать встроенные функции PHP, чтобы сделать ваш, как по крайней мере, 483% легче:
// Use a native PHP array to store your data; it will preserve the new lines
$input = [
"Parameter1" => "<style>
#label-9 {
display: block;
text-align: left;
color: #fff;
}
</style>",
"HistoryPosition" => "1"
];
// This function will preserve everything in your strings
$encoded_value = json_encode($input);
// See your properly formatted JSON string
echo $encoded_value.'<br><br>';
// Decode the string back into an associative PHP array
echo '<pre>';
print_r(json_decode($encoded_value, true));
echo '</pre>';
Обновление на новую информацию о извлечения БД
json_last_error_msg();
производит эту ошибку:
Control character error, possibly incorrectly encoded
Если вы не заботитесь о сохранении новой строки, то это будет работать:
<?php
$db_data = '{
"Parameter1":"<style>
#label-9 {
display: block;
text-align: left;
color: #fff;
}
</style>",
"HistoryPosition":"1"
}';
$db_data = str_replace("\r", "", $db_data);
$db_data = str_replace("\n", "", $db_data);
echo '<pre>';
print_r(json_decode($db_data, true));
echo '</pre>';
Попробуйте [ 'json_last_error_msg'] (http://php.net/json-last-error-msg) и посмотрите, не вызывает ли это каких-либо проблем. –
Я действительно верю, что это из-за разрывов строк, JSON не допускает реальных перерывов между линиями. – Akshay
Akshay прав. см. http://www.json.org/string.gif, form-feed, new-line, return-каретки - все управляющие символы и поэтому не допускаются в строковом литерале. – VolkerK