[英]Splitting value of drop down selection into two variables? (PHP/HTML)
所以我有一个网站,其中包含两个 HTML 下拉列表 - 一个是美国各州的列表,另一个是所选 state 中的城市/城镇列表。 截至目前,我对每个 state 都有一个 HTML 文件,它们都有这样列出的选项:
<option value="44.729932, -72.381758">Albany</option>
<option value="44.976728, -73.30257">Alburg</option>
这些值是每个城镇的坐标(纬度、经度)。 当我点击“搜索”时,表单数据被发送到 SimpleGeo 的 PHP 脚本(位置数据库公司 - 太棒了,顺便说一句) - 选择城镇的目的是在这部分提供 $lat 和 $lon 的值PHP 脚本,每次查询都会发送到 SimpleGeo:
$q = $_GET['q'];
$lat = 44.729932;
$lon = -72.381758;
$args = array('q' => $q, 'num' => 25, 'category' => Restaurant, 'radius' => 25);
$results = $client->getPlaces($lat, $lon, $args);
不能改变的部分是“getPlaces($lat, $lon, $args);” 部分原因是当我用 $coordinates 替换 $lat 和 $lon 然后将它们的值替换为:
$coordinates = $_GET['city']; ('city' is the name and id of my city/town lists)
它不会将其视为有效查询。 同时,如果将“$lat, $lon”替换为数字作为坐标,它就完全可以理解了。
...我只需要在 HTML 文件本身或 PHP 脚本中拆分我的值,通过识别“,”表示纬度值已经结束并且经度值已经开始。 我不知道应该怎么做,我只知道 $lat 和 $lon 必须等于我的 HTML 文件设置的值 - 每个 state 一个文件,每个文件平均大约有 500 个选项......我该怎么做让它将“44.729932, -72.381758”之类的东西识别为 $lat 和 $lon?,或者:如果我让选项看起来像这样,如何让我的下拉列表传递 lat 和 lon 的值:
<option lat="44.976728" lon="-73.30257">Alburg</option>
感谢阅读,对不起,时间太长了:现在是 2,50AM:我的眼睛在流血。 .P 帮助非常感谢...
您可以拆分选项的值以获取纬度和经度。
使用-?[0-9]+\.[0-9]+, -?[0-9]+\.[0-9]+
之类的正则表达式验证您的字段,然后将其explode
并获取两个值:
list($lat, $lon) = explode(", ", $_GET['city']);
此处的分隔符是,
包括空格,以将其删除。
你可以试试这个...
if (isset($_GET['location']) AND strpos($_GET['location'], ', ') !== FALSE) {
list($latitude, $longitude) = explode(', ', $_GET['location']);
}
...尽管如果有人向您发送一些有趣的东西,例如hello -4.3, 3.1 bye!
.
爱迪生。
或者,您可以使用此正则表达式对其进行验证并提取值。
if ($location = filter_input(INPUT_GET, 'location')) {
preg_match('/^(?P<latitude>-?\d+\.\d+), (?P<longitude>-?\d+\.\d+)\z/', $location, $matches);
$latitude = $matches['latitude'];
$longitude = $matches['longitude'];
}
爱迪生。
上述任何一方的额外数据问题都不会成为正则表达式的问题。
我建议您使用唯一 ID 作为选项的值属性,然后根据用户选择的 ID 从数据库中加载所选城镇的纬度和经度。
如果您坚持这样做,那么您可以使用explode() 来拆分返回的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.