PHP: json_decode не может прочитать экранированные строки символов - PullRequest
0 голосов
/ 04 января 2019

Я хочу прочитать файл .json, используя file_get_contents, который возвращает строку.Затем я использую json_decode для создания массива / объекта из него.Все работает.

Моя проблема в том, что иногда строка в файле json содержит выражения регулярных выражений.Они не могут быть расшифрованы!Поэтому следующее уведомление:

Notice: Trying to get property 'Data' of non-object in 

После быстрого поиска в Google я обнаружил, что мне нужно дважды убежать от них.Я попытался изменить его в файле JSON - он работает.

From:
      "Block Proxy URL": "somesite.ab123regex(\d\d\d).top/fyli.php",
To:
      "Block Proxy URL": "somesite.ab123regex(\\d\\d\\d).top/fyli.php",

Но я получаю этот файл, сгенерированный устройством, поэтому не могу каждый раз менять его вручную.

Поэтому я попытался его автоматизировать:

$archer_json_data = file_get_contents($filename);
str_replace("\\", "\\\\", $archer_json_data);
$archer_json_array = json_decode($archer_json_data)->Data;

который не работает.Я также пробовал addlashes вместо str_replace, он не работает.Зачем?Согласно ответам моего быстрого поиска в Google, он работает для них.

В целях отладки я повторил archer_json_data до str_replace и после .. они точно такие же.Почему мой str_replace не работает?

...