Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: json_encode, убрать экранирование слэшей
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » json_encode, убрать экранирование слэшей

Страниц (1): [1]
 

1. Deonis - 24 Декабря, 2012 - 09:26:12 - перейти к сообщению
Здравствуйте! При преобразовании массива в JSON-представление, экранируются слеши. То есть, в данном примере:
PHP:
скопировать код в буфер обмена
  1. $arr = array('url'=>'http://forum.php.su/search_yandex.php');
  2. echo json_encode($arr);

Результат будет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. {"url":"http:\/\/forum.php.su\/search_yandex.php"}

А это меня не устраивает. Начиная с версии PHP 5.4.0, есть константа JSON_UNESCAPED_SLASHES, которая решает данную проблему, но как можно выкрутиться, если версия PHP ниже 5.4.0? Как вариант, можно полученную JSON-строку обработать с помощью функции stripslashes(), но мне кажется, что есть какая-то константа, которая делает это еще на стадии кодирования.
2. Мелкий - 24 Декабря, 2012 - 09:32:20 - перейти к сообщению
Deonis пишет:
мне кажется, что есть какая-то константа, которая делает это еще на стадии кодирования.

Deonis пишет:
Начиная с версии PHP 5.4.0, есть константа JSON_UNESCAPED_SLASHES

Правильно заданный вопрос содержит в себе ответ?
3. Deonis - 24 Декабря, 2012 - 09:37:51 - перейти к сообщению
Мелкий пишет:
Правильно заданный вопрос содержит в себе ответ?

Где-то так Подмигивание , но вы немного не уловили суть. Версия PHP на хосте моего клиента аж 5.2.17 Огорчение и тут при всем желании JSON_UNESCAPED_SLASHES использовать не получиться. Поэтому пытаюсь выяснить - есть ли альтернатива? Не исключаю, что просто упустил где-то информацию, но и для старых версий PHP, тоже может существовать нужный параметр.
4. Toxa - 24 Декабря, 2012 - 10:01:32 - перейти к сообщению
http://nl.php.net/manual/en/func...ncode.php#109224

A more simple method if you have a version of php that does not take into account JSON_UNESCAPED_SLASHES

5. EuGen - 24 Декабря, 2012 - 10:07:10 - перейти к сообщению
Deonis пишет:
Поэтому пытаюсь выяснить - есть ли альтернатива? Не исключаю, что просто упустил где-то информацию, но и для старых версий PHP, тоже может существовать нужный параметр.

На уровне реализации в более ранних версиях - невозможно. Придется использовать замену (пример одной из возможностей нужной замены - выше)
6. Deonis - 24 Декабря, 2012 - 10:13:46 - перейти к сообщению
Toxa пишет:
A more simple method if you have a version of php that does not take into account JSON_UNESCAPED_SLASHES

I don't think that the regular expression is a simple method. I have already said that the alternative - using the function stripslashes()

EuGen пишет:
На уровне реализации в более ранних версиях - невозможно

Жаль. Надежда была Хм
7. Toxa - 24 Декабря, 2012 - 13:36:07 - перейти к сообщению
str_replace is not a regular expression method and stripslashes is got to cut all slashes not only before '/'

 

Powered by ExBB FM 1.0 RC1