Проблема косой черты с json_encode. Почему и как это решить? - PullRequest
14 голосов
/ 19 июля 2011

Зачем выводить эту дату ("2011/7/11") с json_encode отображает ("2011\/7\/11")?

Как я могу преобразовать "2011\/7\/11" в "2011/7/11"?

$data_go = '2011/7/11';
$ddmmyyy='([1-9][\d]{3})[- \/.]([0-1][\d])[- \/.]([0-3][\d])';
            if(preg_match("/$ddmmyyy$/", $data_go)) {
            $year = substr($data_go,0,4);
            $month = substr($data_go,5,2);
            $day = substr($data_go,8,2);
            $j2g = $this->convert_date->JalaliToGregorian($year, $month, $day);
             $ok = $j2g[0]."/".$j2g[1]."/".$j2g[2];
            }else {
              return FALSE;
            }
echo json_encode($ok); // output "2011\/7\/11"

Ответы [ 2 ]

36 голосов
/ 19 июля 2011

В PHP 5.4 вы можете использовать JSON_UNESCAPED_SLASHES:

echo json_encode("2011/7/11", JSON_UNESCAPED_SLASHES);

В противном случае вам нужно выполнить простую постобработку

str_replace('\\/', '/', json_encode("2011/7/11"));

Обратите внимание, что \/ является допустимым способом представления / в JSON.

0 голосов
/ 19 июля 2011
$data_go = str_replace('\'','', $data_go);

удалит все косые черты и даст желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...