首页 > 解决方案 > 从字符串中获取邮政编码

问题描述

我正在尝试从地址字符串中获取邮政编码。

邮政编码可能如下所示:23-12350-530.

字符串通常如下所示:Street 50, 50-123 City

我试图做的是找到邮政编码的位置并从该点开始剪切接下来的 6 个字符。不幸的是 strpos 一直返回 false。

$zipCodePosition = strpos($form->address, "\d{2}-\d{3}");
$zipCode = $zipCodePosition ? substr($form->address, $zipCodePosition , 6) : '';

标签: phpregex

解决方案


strpos不允许使用正则表达式作为参数。

你需要一个preg_match/preg_match_all这里:

// Get the first match
if (preg_match('~\b\d{2}-\d{3}\b~', $text, $match)) {
   echo $match[0];
}

// Get all matches
if (preg_match_all('~\b\d{2}-\d{3}\b~', $text, $matches)) {
   print_r($matches[0]);
}

正则表达式匹配

  • \b- 单词边界
  • \d{2}- 两位数
  • -- 一个连字符
  • \d{3}- 三位数
  • \b- 单词边界

请参阅正则表达式演示


推荐阅读