从字符串中获取数字

发布于 2024-11-02 06:48:39 字数 300 浏览 1 评论 0原文

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

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

但这返回这个:

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

我想要这样的东西

Array
(
    [0] => 110        
)

I have a string for example "lorem 110 ipusm" and I want to get the 110
I already tried this:

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

but this is returning this:

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

I want something like this

Array
(
    [0] => 110        
)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

小兔几 2024-11-09 06:48:39

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

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"
  }
}

To catch any floating point number use:

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

for example:

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

when run gives:

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"
  }
}
半暖夏伤 2024-11-09 06:48:39

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

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

另外,您是否尝试支持符号?小数点?科学计数法?正则表达式还支持字符类的简写; [0-9] 是一个数字,因此您可以简单地使用 \d

Use the + (1 or more match) operator:

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

Also, are you trying to support signs? decimal points? scientific notation? Regular expressions also support a shorthand for character classes; [0-9] is a digit, so you can simply use \d.

多孤肩上扛 2024-11-09 06:48:39

您必须匹配一位以上的数字:

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

You have to mach more than one digit:

preg_match_all("/[0-9]+/", $string, $ret);
望笑 2024-11-09 06:48:39

使用 /\d+/ - 应该可以解决这个问题。

Use /\d+/ - that should solve it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文