【发布时间】:2019-08-24 01:17:50
【问题描述】:
我需要使用 PHP 和 regex 验证意大利地址。 我必须这样写:
Via/Corso (meaning street)/Viale (boulevard)/Piazza (square) [road] (,) [civic number], [city] ([abbreviation of province]).
一个例子是:
- 途经 Garibaldi 374,都灵 (TO)
- Piazza San Pietro, 325, Cerveteri (RM)
我在之前的帖子中找到了完整澳大利亚地址的解决方案,但我不知道如何更改它。 以下是被认为有效的地址的代码和示例:
(15 Gordon St, 3121 Cremorne, Australia)
if(!(preg_match('/^(?:\\d+ [a-zA-Z ]+, ){2}[a-zA-Z ]+$/', trim($_POST["via"])))){
$via_err = "This street is invalid, insert #, Street name, Zip Code, City, Country.";
} else
$via = trim($_POST["via"]);
感谢所有可以帮助我解决这个问题的人。
【问题讨论】:
-
@Thefourthbird 那是not very good
-
@horcrux 啊,我明白了。我会删除评论。
-
小心使用正则表达式解析地址。你真的应该使用地址验证服务/API。 This explains 为什么用正则表达式解析地址可能不好。 (免责声明:我目前在地址验证公司 SmartyStreets 工作)
-
我不知道对于已经规范化为仅包含“Via”、“Piazza”等地址的某种地址数据库是否需要这样做,但在现实生活中它永远不会起作用。在意大利有很多其他的方式来称呼街道。例如检查米兰的 Alzaia Naviglio Grande。当然,大多数地址都使用您要求的字词,但这在现实生活中的应用程序中是不够的。
标签: php regex validation street-address