У меня есть строки:
$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)';
Как найти числовые цифры в этих строках?
Возможно с функцией:
function numbers($string){ // ??? $first = ?; $second = ?; }
Например:
function numbers($one){ // ??? $first = 4; $second = 5; } function numbers($two){ // ??? $first = 2; $second = NULL; }
Лучшим способом для этого может быть regex, но как я могу использовать это для моего примера? Может быть, без регулярного выражения?
Для этого вы можете использовать регулярные выражения . Управляющая последовательность \d
будет соответствовать всем цифрам в строке темы.
Например:
<?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);
Вот моя попытка БЕЗ регулярного выражения
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" }