Я пытался выяснить, почему эта строка 'json_encode'd не анализируется правильно, и натолкнулся на ранее отвеченные вопросы, которые имели последовательность спецификации UTF, которая выдавала ошибку, но не помогли мне здесь.
Вот код, который в настоящее время не работает:
//Decode the notes attached to the sig
$aNotes = json_decode($rule->getNotes(),true);
$bom = pack("CCC",0xef,0xbb,0xbf);
if(0 == strncmp($rule->getNotes(),$bom,3))
{
print('BOM detected - json encoding in UTF-8<br/>');
}
else
{
print('BOM NOT detected - json encoding correctly<br/>');
}
print('rule->getNotes:<br/>' . $rule->getNotes() .'<br/>');
var_dump($aNotes);
, который генерирует этот результат:
BOM NOT detected - json encoding correctly
rule->getNotes:
[{"lDate":"Unknown","sAuthor":"Unknown","sNote":"This is a general purpose Russian spam rule that matches anything starting with 2, 3 or 4 hex digits followed by a domain name ending with .ru -RSK 2010-05-10"},{"lDate":"1295031463082","sAuthor":"Drew Thorstenson","sNote":"this is Ryan's ru rule"}]
NULL
Я выполнил его через JSON Lint, которыйсказал, что он действителен, и анализатор JSON, который тоже правильно его проанализировал.
Любое понимание будет с благодарностью.