如何从字符串中获取所有数字

时间:2016-01-22 04:29:51

标签: php regex url numbers

我有一个看起来像abc,5,7的字符串,我想从中获取数字。

我想出了这个:

^(?<prefix>[a-z]+)(,(?<num1>\d+?))?(,(?<num2>\d+?))?$#i

但它只能使用2个数字,而我的字符串有不同数量的数字。我不知道如何更改正则表达式来解释这一点。请帮忙

3 个答案:

答案 0 :(得分:2)

你可以试试这个

<?php
$string = "abc,5,7";
$int = intval(preg_replace('/[^0-9]+/', '', $string), 10);
echo $int;
?>

您也可以使用此正则表达式!\d!

<?php
$string = "abc,5,7";
preg_match_all('!\d!', $string, $matches);
echo (int)implode('',$matches[0]);

enter image description here

答案 1 :(得分:1)

explode使用逗号,是最简单的方式。

但如果您坚持使用regexp

这是如何

$reg = '#,(\d+)#';

$text = 'abc,5,7,9';

preg_match_all($reg, $text, $m);

print_r($m[1]);

/* Output
Array
(
    [0] => 5
    [1] => 7
    [2] => 9
)
*/

答案 2 :(得分:1)

试试这个。非常简单的使用preg_replace(&#39; / [A-Za-z,] + /&#39;,&#39;&#39;,$ str); //从字符串中删除字母和逗号

<?php
$str="bab,4,6,74,3668,343";
$number = preg_replace('/[A-Za-z,]+/', '', $str);// removes alphabets from the string and comma
echo $number;// your expected output 
?>

预期产出

46743668343