Intereting Posts
загрузить файл с помощью ajax временного сохранения в таблице Идентификация пользователя Yii2 после перенаправления страницы Статические методы или нет? Проблема с выполнением файла bash Kohana ORM и проверка, имеющие проблемы file_exists () возвращает false, даже если файл существует (удаленный URL) Получить все URL-адреса в строке с php Использование exec () в PHP: Передача аргументов Неопределенный метод с библиотекой Composer и CodeIgniter PHP MySQL Query, чтобы получить наибольшую популярность из двух разных таблиц Сессия PHP не сохраняется между страницами (php oop) статический метод vs нет статического метода Рекомендации PHP: Im загружает массив $ GLOBALS с большим количеством информации, которая будет использоваться между моими php-страницами Модуль авторизации Kohana 3, получение пользователей с ролью «персонал» или «менеджер» Как переименовать имя файла после загрузки с помощью php?

json_encode () сбрасывание косых черт

Я вытаскиваю JSON из Instagram:

$instagrams = json_decode($response)->data;

Затем разбор переменных в массив PHP для реструктуризации данных, затем повторное кодирование и кэширование файла:

file_put_contents($cache,json_encode($results));

Когда я открываю файл кеша, все мои косые черты «/» сбрасываются:

http:\/\/distilleryimage4.instagram.com\/410e7...

Я собираюсь из своих поисков, что json_encode() автоматически делает это … есть ли способ отключить его?

есть ли способ отключить его?

Да, вам нужно использовать JSON_UNESCAPED_SLASHES флаг JSON_UNESCAPED_SLASHES .

! важно прочитать до: https://stackoverflow.com/a/10210367/367456 (знайте, с чем имеете дело – знайте своего врага)

 json_encode($str, JSON_UNESCAPED_SLASHES); 

Если у вас нет PHP 5.4 под рукой, выберите одну из многих существующих функций и измените их в соответствии с вашими потребностями, например http://snippets.dzone.com/posts/show/7487 (архивная копия) .

Пример демонстрации

 <?php /* * Escaping the reverse-solidus character ("/", slash) is optional in JSON. * * This can be controlled with the JSON_UNESCAPED_SLASHES flag constant in PHP. * * @link http://stackoverflow.com/a/10210433/367456 */ $url = 'http://www.example.com/'; echo json_encode($url), "\n"; echo json_encode($url, JSON_UNESCAPED_SLASHES), "\n"; 

Пример:

 "http:\/\/www.example.com\/" "http://www.example.com/" 

Да , но нет – побег с косой чертой – это хорошо . При использовании JSON внутри тегов <script> это необходимо как </script> где угодно – даже внутри строки – закончит тег скрипта.

В зависимости от того, где используется JSON, это необязательно, но его можно безопасно игнорировать.

С другой стороны, у меня возникла проблема с PHPUNIT, утверждающим, что URL-адреса содержались или равны URL-адресу json_encoded –

мой ожидаемый:

http://localhost/api/v1/admin/logs/testLog.log

будут закодированы так:

http:\/\/localhost\/api\/v1\/admin\/logs\/testLog.log

Если вам нужно выполнить сравнение, преобразование URL-адреса, используя:

addcslashes($url, '/')

позволил получить правильный результат во время моих сравнений.