как кодировать URL-адрес в JSON с помощью PHP - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу добавить URL-адрес вместе с выводом текста в виде json с моей веб-страницы php, и для этого я использовал функцию json_encode() в php, а ниже приведен массив php, который будет преобразован в json:

$output= array (
  'payload' => 
  array (
    'google' => 
    array (
      'expectUserResponse' => true,
      'richResponse' => 
      array (
        'items' => 
        array (
          0 => 
          array (
            'simpleResponse' => 
            array (





              'textToSpeech' => '<speak>some text... <audio src=\"https://example.com\"></audio></speak>',
              'displayText' => 'some text...',





            ),
          ),
        ),
        'suggestions' => 
        array (
          0 => 
          array (
            'title' => 'cancel',
          ),
        ),
      ),
    ),
  ),
);

echo json_encode($output);

и этот php-код выдает следующий вывод json:

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {





              "textToSpeech": "<speak>some text... <audio src=\\\"https://example.com\\\"></audio></speak>",
              "displayText": "some text..."





            }
          }
        ],
        "suggestions": [
          {
            "title": "cancel"
          }
        ]
      }
    }
  }
}

Но мне нужен следующий вывод json:

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {





              "textToSpeech": "<speak>some text... <audio src=\"https://example.com\"></audio></speak>",
              "displayText": "some text..."





            }
          }
        ],
        "suggestions": [
          {
            "title": "cancel"
          }
        ]
      }
    }
  }
}

Я не понимал, как бросить URL в JSON согласно моему требованию.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019
'<speak>some text... <audio src=\"https://example.com\"></audio></speak>',

Двойные кавычки здесь не нужно экранировать.Обратные слеши обрабатываются буквально, потому что строка заключена в одинарные кавычки.Обратная косая черта может экранировать только одинарную кавычку или другую обратную косую черту внутри строк в одинарных кавычках.Любой другой следующий символ приводит к буквальному обратному слешу.

Либо '<speak>some text... <audio src="https://example.com"></audio></speak>' (без экранирования), либо "<speak>some text... <audio src=\"https://example.com\"></audio></speak>" (двойные кавычки) должны давать желаемый результат.

0 голосов
/ 02 апреля 2019

Если вам не нужны экранированные косые черты, вы можете использовать

json_encode($response, JSON_UNESCAPED_SLASHES);

, чтобы указать PHP не избегать этих косых черт.

Но если вы говорите о обратных слешах, онинеобходимо экранировать так, поскольку PHP интерпретирует их как escape-символы.Вы всегда можете вручную удалить их на принимающей стороне.

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