PHP正则表达式在字符串的开头找到任何数字

时间:2011-05-05 04:05:00

标签: php regex

我正在使用PHP,我希望能够创建一个正则表达式来查找并返回地址的街道号部分。

示例:

1234-南大道华盛顿特区,APT#306,ZIP45234

在上面的例子中,只返回1234。

看起来这应该非常简单,但我还没有成功。任何帮助将不胜感激。

3 个答案:

答案 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)

这可能会在很多情况下中断 - 地址行并不总是以数字串开头,等等。

See this question

答案 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));