6

I'm using PHP, and am hoping to be able to create a regex that finds and returns the street number portion of an address.

Example:

1234- South Blvd. Washington D.C., APT #306, ZIP45234

In the above example, only 1234 would be returned.

Seems like this should be incredibly simple, but I've yet to be successful. Any help would be greatly appreciated.

2 Answers 2

5

Try this:

$str = "1234- South Blvd. Washington D.C., APT #306, ZIP4523";
preg_match("~^(\d+)~", $str, $m);
var_dump($m[1]);

OUTPUT:

string(4) "1234"
Sign up to request clarification or add additional context in comments.

Comments

0

I know you requested regex but it may be more efficient to do this without (I haven't done benchmarks yet). Here is a function that you might find useful:

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);
}

It also removes the number from the string. If you do not want that, simply change (&$str) to ($str) and remove the line: $str = substr($str, strlen($num));.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.