从PHP获取string中的数字

我有string:

$one = 'foo bar 4 baz (5 qux quux)'; $two = 'bar baz 2 bar'; $three = 'qux bar 12 quux (3 foo)'; $four = 'foo baz 3 bar (13 quux foo)'; 

我怎样才能find这些string中的数字?

也许与function:

 function numbers($string){ // ??? $first = ?; $second = ?; } 

例如:

 function numbers($one){ // ??? $first = 4; $second = 5; } function numbers($two){ // ??? $first = 2; $second = NULL; } 

最好的方法可能是正则expression式,但我怎么能用这个例子? 也许没有正则expression式?

你可以使用正则expression式 。 \d 转义序列将匹配主题string中的所有数字。

例如:

 <?php function get_numerics ($str) { preg_match_all('/\d+/', $str, $matches); return $matches[0]; } $one = 'foo bar 4 baz (5 qux quux)'; $two = 'bar baz 2 bar'; $three = 'qux bar 12 quux (3 foo)'; $four = 'foo baz 3 bar (13 quux foo)'; print_r(get_numerics($one)); print_r(get_numerics($two)); print_r(get_numerics($three)); print_r(get_numerics($four)); 

https://3v4l.org/DiDBL

你可以做:

 $str = 'string that contains numbers'; preg_match_all('!\d+!', $str, $matches); print_r($matches); 

这是我的尝试, 没有一个正则expression式

 function getNumbers($str) { $result = array(); // Check each character. for($i = 0, $len = strlen($str); $i < $len; $i++) { if(is_numeric($str[$i])) { $result[] = $str[$i]; } } return $result; } $one = 'one two 4 three (5 four five)'; $two = 'one two 2 three'; $three = 'one two 12 three (3 four)'; $four = 'one two 3 three (13 four five)'; var_dump(getNumbers($one)); var_dump(getNumbers($two)); var_dump(getNumbers($three)); var_dump(getNumbers($four)); 

//输出:

 array(2) { [0]=> string(1) "4" [1]=> string(1) "5" } array(1) { [0]=> string(1) "2" } array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" } array(3) { [0]=> string(1) "3" [1]=> string(1) "1" [2]=> string(1) "3" }