Извлечение чисел из строк в PHP: подход без запятых

Привет, друг-энтузиаст PHP! Сегодня мы собираемся погрузиться в захватывающий мир извлечения чисел из строк в PHP, не беспокоясь об этих надоедливых запятых. Независимо от того, имеете ли вы дело с пользовательским вводом, обработкой данных или любым другим сценарием, где вам нужно извлечь числа, мы предоставим вам несколько методов. Итак, приступим!

Метод 1: использование регулярных выражений
Регулярные выражения — мощный инструмент для сопоставления строк с образцом. В этом случае мы можем использовать их для извлечения чисел без запятых. Вот как:

$string = "The price is $1,234.56";
$pattern = '/\d+(?:\.\d+)?/';
preg_match_all($pattern, $string, $matches);
$numbers = $matches[0];
// Output: [1234.56]

Регулярное выражение \d+(?:\.\d+)?соответствует одной или нескольким цифрам, за которыми следует необязательная десятичная часть. Этот метод позволяет извлекать из строки как целые, так и десятичные числа.

Метод 2: удаление запятых и синтаксический анализ
Если вы предпочитаете более простой подход без регулярных выражений, вы можете просто удалить запятые из строки и проанализировать оставшиеся числа. Вот пример:

$string = "The population is 1,234,567";
$cleanString = str_replace(',', '', $string);
$numbers = array_map('intval', explode(' ', $cleanString));
// Output: [1234567]

Сначала мы удаляем запятые, используя str_replace(), преобразуя строку в «Население составляет 1234567 человек». Затем мы разделяем строку на массив, используя explode(), и преобразуем каждый элемент в целое число, используя array_map().

Метод 3: использование фильтра и регулярного выражения
Другой подход — использовать функцию filter_var()в сочетании с регулярными выражениями. Этот метод позволяет извлекать как положительные, так и отрицательные числа. Взгляните:

$string = "The temperature is -10.5°C";
$pattern = '/-?\d+(?:\.\d+)?/';
preg_match_all($pattern, $string, $matches);
$numbers = $matches[0];
// Output: [-10.5]

Здесь мы используем регулярное выражение /-?\d+(?:\.\d+)?/, которое соответствует необязательному отрицательному знаку, за которым следует одна или несколько цифр с необязательной десятичной частью.

Метод 4. Расчленение и фильтрация
Если вы знаете, что числа в строке разделены определенными символами (кроме запятых), вы можете разделить строку и отфильтровать нечисловые значения. Давайте посмотрим пример:

$string = "The scores are 89, 90, 95";
$numbers = array_filter(explode(',', $string), 'is_numeric');
// Output: [89, 90, 95]

В этом методе мы разделяем строку, используя explode()через запятую. Затем мы используем array_filter()с функцией is_numeric(), чтобы удалить все нечисловые элементы из результирующего массива.

Подведение итогов
И вот оно! Мы рассмотрели несколько методов извлечения чисел из строк в PHP без запятых. Вы можете выбрать подход, который соответствует вашим конкретным требованиям и стилю кодирования. При выборе наиболее подходящего метода для вашей задачи не забывайте учитывать такие факторы, как вариации входных данных, потенциальные отрицательные значения и десятичные числа.

Удачного программирования и пусть ваши начинания в PHP процветают!