从字符串中获取数字

时间:2011-04-20 17:22:57

标签: php regex preg-match-all

我有一个字符串,例如“lorem 110 ipusm”,我想获得110 我已经尝试过了:

preg_match_all("/[0-9]/", $string, $ret);

但是这回来了:

Array
(
    [0] => 1
    [1] => 1
    [2] => 0
)

我想要这样的东西

Array
(
    [0] => 110        
)

4 个答案:

答案 0 :(得分:3)

使用+(1个或多个匹配)运算符:

preg_match_all("/[0-9]+/", $string, $ret);

另外,你是否想要支持标志?小数点?科学计数法?正则表达式也支持字符类的简写; [0-9]是一个数字,因此您只需使用\d

答案 1 :(得分:3)

你需要多个数字:

preg_match_all("/[0-9]+/", $string, $ret);

答案 2 :(得分:3)

使用/\d+/ - 应该解决它。

答案 3 :(得分:3)

要捕获任何浮点数,请使用:

preg_match_all("/[+-]?\d+[\d\.Ee+]*/", $string, $matches);

例如:

<?
$string = 'ill -1.1E+10 ipsum +1,200.00 asdf 3.14159, asdf';
preg_match_all("/[+-]?\d+[\d\.Ee+]*/", $string, $matches);
var_dump($matches);
?>

运行时给出:

array(1) {
  [0]=>
  array(4) {
    [0]=>
    string(8) "-1.1E+10"
    [1]=>
    string(2) "+1"
    [2]=>
    string(6) "200.00"
    [3]=>
    string(7) "3.14159"
  }
}