Get numbers from a string using PHP

I have lines:

$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)'; 

How to find numerical digits in these lines?

Possible with function:

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

For example:

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

The best way to do this might be regex, but how can I use this for my example? Maybe without regular expression?

+8
php regex
source share
3 answers

You can use regular expressions for this . The escape sequence \d will match all the digits in the subject line.

For example:

 <?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

+22
source share

You can do:

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

Here is my attempt WITHOUT regex

 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)); 

//Exit:

 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" } 
+5
source share

All Articles