我正在使用PHP,我希望能够创建一个正则表达式来查找并返回地址的街道号部分。
示例:
1234-南大道华盛顿特区,APT#306,ZIP45234
在上面的例子中,只返回1234。
看起来这应该非常简单,但我还没有成功。任何帮助将不胜感激。
答案 0 :(得分:4)
试试这个:
$str = "1234- South Blvd. Washington D.C., APT #306, ZIP4523";
preg_match("~^(\d+)~", $str, $m);
var_dump($m[1]);
string(4) "1234"
答案 1 :(得分:1)
这可能会在很多情况下中断 - 地址行并不总是以数字串开头,等等。
答案 2 :(得分:0)
我知道你曾要求regex
,但如果没有这样做可能会更有效率(我还没有完成基准测试)。这是一个你可能会觉得有用的函数:
function removeStartInt(&$str)
{
$num = '';
$strLen = strlen($str);
for ($i = 0; $i < $strLen; $i++)
{
if (ctype_digit($str[$i]))
$num .= $str[$i];
else
break;
}
if ($num === '')
return null;
$str = substr($str, strlen($num));
return intval($num);
}
它还会删除字符串中的数字。如果您不想这样做,只需将(&$str)
更改为($str)
并删除该行:$str = substr($str, strlen($num));
。