如何在PHP中解析整数?

时间:2014-08-12 13:42:44

标签: php parsing

我有一个表格,用户可以输入他/她的地址。街道编号和街道名称在同一文本字段中输入。我的数据库直接将街道号码存储在地址表中,而街道名称,城市,省份和邮政编码都有自己的表格(即它们是外键)*。

我想从街道地址字段解析int,以便我可以将数字和街道名称存储在适当的位置。我在这个页面上提到了解决方案:Extract numbers from a string

问题是如果我的用户不小心在街道名称中输入了一个号码,那么使用该页面上的任何解决方案都会导致街道号码不正确。例如:

123 Som3estreet - > 1233

这里的正确方法是什么?

*注意:我不太确定这是否是最好的设计,所以如果有人有任何改进建议,我们将不胜感激。

3 个答案:

答案 0 :(得分:2)

地址,尤其是国际地址,没有义务使用一致的格式。有些地址甚至没有数字,而是名称。仅仅因为这个原因,我个人就会结束这一努力。

但是,如果您确定某个地址会有一个数字,并且确保其正确至关重要,那么您最好的方法是为该数字要求一个单独的字段(表单输入),然后对其进行验证。< / p>

编辑:

简单的地址组织可能围绕第一行地址和代码。例如,在英国:123示例道路,AC1 2CD

这在整个国家都是独一无二的,足以让本地谷歌地图搜索找到正确的位置。所以你可以在这对上创建一个约束。

答案 1 :(得分:0)

您需要使用^

匹配字符串的开头
preg_match('/^[0-9]+/', $string, $m);
$number = $match[0];
echo $number; // 123

答案 2 :(得分:0)

好像你需要拿出号码

$string = '123 Som3estreet';
preg_match_all('!\d+!', $string , $matches);