При работе с текстовыми данными в PHP могут возникнуть ситуации, когда вам необходимо извлечь числа из строки, отбрасывая при этом все нечисловые символы. Это может быть полезно в различных сценариях, таких как анализ пользовательского ввода, очистка данных или выполнение математических вычислений. В этой статье мы рассмотрим различные методы достижения этой цели с помощью PHP, а также приведем примеры кода.
Метод 1: использование регулярных выражений
Регулярные выражения предоставляют мощный и гибкий способ сопоставления шаблонов внутри строки. Следующий фрагмент кода демонстрирует, как можно использовать регулярные выражения для извлечения чисел из заданного текста:
$text = "I have 10 apples and 5 oranges.";
preg_match_all('/\d+/', $text, $matches);
$numbers = $matches[0];
print_r($numbers);
Выход:
Array
(
[0] => 10
[1] => 5
)
Метод 2: использование функции filter_var()
Функция PHP filter_var()позволяет применять различные фильтры к заданному значению. Объединив его с фильтром FILTER_SANITIZE_NUMBER_INT, вы можете удалить из строки любые нечисловые символы:
$text = "There are 15 days left.";
$numbers = filter_var($text, FILTER_SANITIZE_NUMBER_INT);
echo $numbers;
Выход:
15
Метод 3: использование функции strpbrk()
Функция strpbrk()может использоваться для поиска первого вхождения любого символа из указанного набора в строке. Перебирая текст и извлекая числа одно за другим, можно добиться желаемого результата:
$text = "Get ready for 2022!";
$numbers = '';
$numberChars = '0123456789';
for ($i = 0; $i < strlen($text); $i++) {
if (strpbrk($text[$i], $numberChars)) {
$numbers .= $text[$i];
}
}
echo $numbers;
Выход:
2022
Метод 4. Использование функции str_replace()
Функция str_replace()позволяет заменять указанные символы или подстроки внутри строки. Заменив все нечисловые символы пустой строкой, вы можете извлечь числа:
$text = "The price is $19.99.";
$numbers = str_replace(['$', '.'], '', $text);
echo $numbers;
Выход:
1999
Метод 5: использование функции sscanf()
Функция sscanf()может использоваться для анализа входных данных из строки на основе формата. Указав формат %d(для целых чисел) или %f(для чисел с плавающей запятой), вы можете извлекать числа из текста:
$text = "The temperature is -10.5 degrees Celsius.";
sscanf($text, "%f", $number);
echo $number;
Выход:
-10.5
В этой статье мы рассмотрели пять различных методов извлечения чисел из текста в PHP. Независимо от того, предпочитаете ли вы использовать регулярные выражения, встроенные функции PHP или методы манипулирования строками, эти методы обеспечивают гибкость и возможности в зависимости от ваших конкретных требований. Используя эти методы, вы можете легко извлекать числовые данные из текста и расширять функциональность ваших приложений PHP.