Я пытаюсь преобразовать британские почтовые индексы в longs и lats, используя PHP.PHP: функция CURL с использованием формы?
поэтому вместо использования карт Google я собираюсь использовать PHP CURL и использовать альтернативный поставщик, который проще реализовать.
Однако у меня есть проблема с тем, что функция CURL возвращает что-либо, используя поле ввода в форме.
В основном, мне просто нужно поместить Почтовый код в поле ввода в мою форму и нажать поиск, и он должен использовать CURL и вернуть длинный и лат этого почтового кода, но мой код этого не делает, а вместо этого печатает значение поля ввода в строке URL и все!
здесь весь мой код:
<?php
error_reporting(-1);
ini_set('display_errors', 'On');
if (isset($_POST["postcode"])) {
function postCode2Geog($code){
//$code = strtolower(str_replace(' ','',$code));
$code = $_POST["postcode"];
$uri = "http://www.streetmap.co.uk/streetmap.dll?GridConvert?name=".$code."&type=Postcode";
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
preg_match('#long</strong> \(wgs84\)\s*?\<\/td\>\s*?\<td width="50%" align="center" valign="middle"\>\S{2,3}:\S{2}:\S{2} \((.*?) \)#i',$output,$longMatch);
preg_match('#lat</strong> \(wgs84\)\s*?\<\/td\>\s*?\<td width="50%" align="center" valign="middle"\>\S{2,3}:\S{2}:\S{2} \((.*?) \)#i',$output,$latMatch);
$long = $longMatch[1];
$lat = $latMatch[1];
return array($lat,$long);
}
}
?>
и это HTML часть:
<form action="" method="GET">
<input type="text" name="postcode" />
<input type="submit" value="search" >
</form>
может кто-то пожалуйста, сообщите об этом?
EDIT:
error_reporting(-1);
ini_set('display_errors', 'On');
if (isset($_POST["postcode"])) {
//$code = strtolower(str_replace(' ','',$code));
$code = $_POST["postcode"];
$uri = "http://www.streetmap.co.uk/streetmap.dll?GridConvert?name=".$code."&type=Postcode";
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
preg_match('#long</strong> \(wgs84\)\s*?\<\/td\>\s*?\<td width="50%" align="center" valign="middle"\>\S{2,3}:\S{2}:\S{2} \((.*?) \)#i',$output,$longMatch);
preg_match('#lat</strong> \(wgs84\)\s*?\<\/td\>\s*?\<td width="50%" align="center" valign="middle"\>\S{2,3}:\S{2}:\S{2} \((.*?) \)#i',$output,$latMatch);
$long = $longMatch[1];
$lat = $latMatch[1];
return array($lat,$long);
}
где вы на самом деле называете эту функцию? Ваш метод формы также должен быть 'POST', так как вы используете' $ _POST' – ElefantPhace
@ElefantPhace, я думал, что вызываю его внутри if (isset ...) и т. Д.? – william
нет, вы только что определили функцию там. либо определите его в другом месте и назовите его оттуда, либо удалите часть функции и оставьте свои методы завитки, где они находятся – ElefantPhace