Я пытаюсь передать ввод html формы через API матрицы расстояния Google. Я поместил их в переменные и заменил пробелы со знаком «+». Когда я повторяю переменные, они идеальны. Когда я жестко кодирую эти значения переменных, API возвращает расстояние, но ничего не возвращает, когда я использую представления переменных.
<?php
$start = $_POST["origin"];
$end = $_POST["destination"];$value = strtolower(str_replace(' ', '+', $start));
echo $value;
$value2 = strtolower(str_replace(' ', '+', $end));
echo $value2;
$url = 'http://maps.googleapis.com/maps/api/distancematrix/json?
origins=$value&destinations=$value2&mode=driving&language=English-
en&key=$key"';
$json = file_get_contents($url); // get the data from Google Maps API
$result = json_decode($json, true); // convert it from JSON to php array
echo $result['rows'][0]['elements'][0]['distance']['text'];
?>
Проблема заключается в использовании / неправильном использовании одинарных кавычек при работе с переменными PHP. Если вы используете одинарные кавычки, то переменные внутри должны быть заключены в кавычки / экранированы, чтобы они правильно интерпретировались. Возможно, более выгодный подход заключается в использовании двойных кавычек вокруг всей строки / URL-адреса. При необходимости используйте фигурные скобки, чтобы обеспечить правильную обработку определенных типов переменных (т. Е. Использование переменной массива {$arr['var']}
)
Для описанной выше ситуации должно работать следующее — намеренно показано в одной строке, чтобы подчеркнуть, что в URL теперь нет пробелов.
$url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins={$value}&destinations={$value2}&mode=driving&language=English-en&key={$key}";
Ваша переменная $ url устанавливается с помощью буквальных кавычек (одинарных кавычек).
Если вы хотите использовать переменные внутри строки, вам нужно использовать двойные кавычки, в противном случае вам нужно объединить.
Я также вижу дополнительную двойную кавычку, висящую на конце вашей строки URL, попробуйте это с исправлениями:
<?php
$start = urlencode($_POST["origin"]);
$end = urlencode($_POST["destination"]);
$url = "http://maps.googleapis.com/maps/api/distancematrix/json?
origins={$start}&destinations={$end}&mode=driving&language=English-
en&key=$key";
$json = file_get_contents($url); // get the data from Google Maps API
$result = json_decode($json, true); // convert it from JSON to php array
echo $result['rows'][0]['elements'][0]['distance']['text'];
?>