json_encode PHP не выходит из всех управляющих символов JSON

var isDate_ = function(input) {
        var status = false;
        if (!input || input.length <= 0) {
          status = false;
        } else {
          var result = new Date(input);
          if (result == 'Invalid Date') {
            status = false;
          } else {
            status = true;
          }
        }
        return status;
      }
26
задан Gustav 26 June 2009 в 11:22
поделиться

5 ответов

Д'ох - вам нужно дважды закодировать: JSON.parse, конечно, ожидает строку:

<script type="text/javascript">

JSON.parse(<?php echo json_encode($s) ?>);

</script>
12
ответ дан 28 November 2019 в 07:10
поделиться

Может быть, я слепой, но в вашем примере они БЫЛИ сбежали. А как насчет

<script type="text/javascript">

JSON.parse("<?php echo $s ?>");  // Will throw SyntaxError 

</script>

(обратите внимание на разные цитаты)

1
ответ дан 28 November 2019 в 07:10
поделиться

Просто дополнение к ответу Грега : выходные данные json_encode () уже содержатся в двойных кавычках ( "), поэтому нет необходимости снова заключать их в кавычки:

<script type="text/javascript">
    JSON.parse(<?php echo $s ?>);
</script>
0
ответ дан 28 November 2019 в 07:10
поделиться

Я до сих пор не нашел решения без str_replace ..

Попробуйте этот код .

$json_encoded_string = json_encode(...);
$json_encoded_string = str_replace("\r", '\r', $json_encoded_string);
$json_encoded_string = str_replace("\n", '\n', $json_encoded_string);

Надеюсь, что это поможет ...

4
ответ дан 28 November 2019 в 07:10
поделиться
$search = array("\n", "\r", "\u", "\t", "\f", "\b", "/", '"');
$replace = array("\\n", "\\r", "\\u", "\\t", "\\f", "\\b", "\/", "\"");
$encoded_string = str_replace($search, $replace, $json);

Это правильный путь

3
ответ дан 28 November 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: