获取字符串中的第一个数字(如果有)


get the first number in string if there is one

我正在寻找一种从字符串中提取第一个数字的方法。这个例子

    43
    432Phill 21
    432hill 21
    43#1 Example
    43,123 example

应该返回

    43
    432
    432
    43
    43,123

我假设可以使用 strpos 并从 a-z、A-Z 和 # 迭代指针。 获得所有位置,然后使用最低的非零值来确定数字结束的点。这似乎有点矫枉过正。有没有更好的方法?

编辑:位置是稍后使用substr。如果有更好的方法,我会失望。

使用正则表达式,您可以从字符串中提取数字。

以下语句应该可以解决问题:
preg_match_all('~'d+~', $string, $match);

$match 是包含在 $string 中的数字数组。

如果数字从开头开始,您可以这样做:

$number = floatval($string); //it will return float e.g. 432

如果您使用逗号而不是小数点,例如 43,123,则必须首先将其替换为点:

$string = str_replace(',', '.', '43,123 example');