从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));
你可以做:
$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" }