所以我有一个带有两个 HTML 下拉列表的网站 - 一个是美国各州的列表,另一个是所选州的城市/城镇列表。截至目前,我为每个州都有一个 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);”部分是因为出于某种原因,当我将 $lat 和 $lon 替换为 $coordinates,然后将它们的值替换为:
$coordinates = $_GET['city']; ('city' 是我的城市/城镇列表的名称和 ID)
它不认为它是一个有效的查询。同时,如果将“$lat, $lon”替换为数字作为坐标,它完全可以理解。
...我只需要拆分我的值,无论是在 HTML 文件本身,还是在 PHP 脚本中,通过识别“,”意味着纬度值已经结束,经度值已经开始。我不知道应该怎么做,我只知道 $lat 和 $lon 必须等于我的 HTML 文件设置的值 - 每个州一个文件,每个文件平均大约 500 个选项......我怎么办让它将“44.729932,-72.381758”之类的东西识别为 $lat 和 $lon?!或者,如果我让选项看起来像这样,我如何让我的下拉列表传递纬度和经度的值:
<option lat="44.976728" lon="-73.30257">Alburg</option>
感谢阅读,抱歉这么长!现在是凌晨 2:50,我的眼睛在流血! :P 非常感谢您的帮助...
最佳答案
您可以拆分选项的值以获得纬度和经度。
使用正则表达式验证您的字段,例如 -?[0-9]+\.[0-9]+, -?[0-9]+\.[0-9]+
,然后分解
它并得到两个值:
list($lat, $lon) = explode(", ", $_GET['city']);
这里的分隔符是 ,
包括空格,顺便说一句,将其删除。
关于php - 将下拉选择的值拆分为两个变量? (PHP/HTML),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5846969/