PHP Regex to Find Any Number at the Beginning of String
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, bu开发者_开发技巧t I've yet to be successful. Any help would be greatly appreciated.
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"
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));
.
精彩评论