PHP在文本之前获取字符串上的第一个数字,忽略其他所有数字

时间:2015-03-24 11:32:33

标签: php

我有一个字符串,我试图只获取当前正在工作的数字。

我的问题是我只想在单词结果之前得到数字并忽略其他所有内容。

这是一个示例字符串:

echo '381,000,000 results 1. something here 12345566778898776655444';

$theContent = preg_replace('/\D/', '', $theContent);
echo $theContent;

如何在单词结果之前获取数字并忽略结果以及之后的所有内容?

4 个答案:

答案 0 :(得分:1)

如果你想看到这个:

  

381

使用

  

^(\ d *)

但是如果你想看到数字“,”

  

3.81亿

使用

  

^([\ d,] *)

答案 1 :(得分:1)

我首先匹配,explode()之后由,连接起来的所有数字:

$string = '381,000,000 results 1. something here 12345566778898776655444';
$pattern = '/((^|,)([\d]+))*/';

preg_match($pattern, $string, $matches);
$numbers = explode(',', $matches[0]);

var_dump($numbers);

IMO这是最稳定的解决方案。

关于正则表达式模式:它匹配行的序列或,后跟一个或多个数字字符多次。它使用捕获组()将数字与,分开。

答案 2 :(得分:0)

你可以从中得到号码:

$theContent = '381,000,000 results 1. something here 12345566778898776655444';

$array = explode(" ", $theContent);

$wantedArray = [];

foreach ($array as $item) {
    if (is_numeric(str_replace(",", "", $item))) {
        $wantedArray[] = $item;
    }
}

答案 3 :(得分:0)

试试这个:

preg_match_all('!\d+!', $theContent, $matches);
print_r( $matches);