0

我正在按需从国外数据库导入用户数据。虽然我将门牌号与街道名称分开,但其他数据库没有。

我用

preg_match_all('!\d+!')

排除数字。这适用于这样的地址线:

streetname 60

但它不适用于这样的地址线:

streetname 60/2/3

在那种情况下,我最终提取了 60,并且 /2/3 保留在街道的名称中。

不幸的是,我不是正则表达式专家。恰恰相反。我的问题是我不仅需要能够检测数字,还需要能够检测斜线和连字符。

有人可以帮我吗?

4

2 回答 2

5

尝试:

preg_match_all('![0-9/-]+!', 'streetname 60/2/3', $matches);

于 2013-08-06T13:20:58.387 回答
0

要给出明确的答案,我们必须知道您的数据中的模式。

例如,在德国,我们有时会有类似13aor的门牌号码23-42,也可以写成23 - 42

一种可能的解决方案是匹配以数字开头的空格之后的所有内容

preg_match_all('!\s(\d.*)!', 'streetname 60/2/3', $matches);

但是,如果你有美国的街道数据,这会产生误报13street

于 2013-08-06T13:36:10.313 回答