Intereting Posts
Переменные сеанса PHP после обновления страницы php не может подключиться к mysql с ошибкой 13 (но в командной строке) PHP: Как проверить, не существует ли файл или разрешено ли разрешение? Как я могу отправить push-уведомление нескольким устройствам за один раз в iPhone? Удалите автоматически добавленную <p> со страницы, которая не имеет литерального содержимого (использует короткие коды) Доллар ($) вводит строку пароля, обрабатываемую как переменную Может ли объект JSON, возвращаемый PHP, содержать объект даты Полезный класс базы данных PHP невозможно загрузить несколько изображений в папку для загрузки PHP: доступ к многомерному массиву с помощью foreach и вывод результатов в виде таблицы Настройка сеанса PHP / WordPress Проблема с кодировкой запроса php mysql Достаточно ли FILTER_VALIDATE_EMAIL прекратить инъекцию оболочки? WooCommerce – Как удалить продукт и категорию продукта из URL-адресов? PHP – условный оператор не работает должным образом

Получить числа из строки с помощью PHP

У меня есть строки:

$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, но как я могу использовать это для моего примера? Может быть, без регулярного выражения?

Solutions Collecting From Web of "Получить числа из строки с помощью PHP"

Для этого вы можете использовать регулярные выражения . Управляющая последовательность \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)); 

https://3v4l.org/DiDBL

Ты можешь сделать:

 $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" }