В PHP бывают случаи, когда вам нужно манипулировать строками и удалить из них все нечисловые символы и точки. Независимо от того, работаете ли вы с пользовательским вводом, обрабатываете данные или проверяете поля формы, удаление нечисловых символов и точек является распространенной задачей. В этой статье мы рассмотрим различные методы достижения этой цели, используя разговорный язык, и попутно предоставим примеры кода.
Метод 1: регулярные выражения (регулярное выражение)
Один из наиболее универсальных методов удаления нечисловых символов и точек — использование регулярных выражений. PHP предоставляет мощный механизм регулярных выражений, который позволяет определять шаблоны и выполнять сопоставление строк с шаблонами. Вот пример использования регулярного выражения для удаления нечисловых символов и точек из строки:
$string = "123.45abcde!@#$";
$strippedString = preg_replace("/[^0-9.]/", "", $string);
echo $strippedString; // Output: 123.45
Метод 2: Фильтрация ввода
Если вы работаете с пользовательским вводом или отправкой форм, функция PHP filter_inputможет оказаться полезной. Он позволяет очищать и фильтровать входные данные с помощью предопределенных фильтров. Вот пример использования filter_inputдля удаления нечисловых символов и точек:
$userInput = $_POST['input_field'];
$filteredInput = filter_var($userInput, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
echo $filteredInput; // Output: 123.45
Метод 3: итерация символов
Другой подход заключается в переборе каждого символа в строке и построении новой строки только из нужных символов. Этот метод дает вам больше контроля над процессом зачистки. Вот пример:
$string = "123.45abcde!@#$";
$strippedString = '';
for ($i = 0; $i < strlen($string); $i++) {
$char = $string[$i];
if (is_numeric($char) || $char === '.') {
$strippedString .= $char;
}
}
echo $strippedString; // Output: 123.45
Метод 4: разнесение и фильтрация
Если ваша строка содержит несколько фрагментов, разделенных нечисловыми символами или точками, вы можете разделить строку на массив, используя explode, а затем отфильтровать нежелательные элементы. Вот пример:
$string = "123.45abcde!@#$67.89";
$fragments = explode(' ', $string);
$filteredFragments = array_filter($fragments, function ($fragment) {
return is_numeric($fragment) || $fragment === '.';
});
$strippedString = implode('', $filteredFragments);
echo $strippedString; // Output: 123.4567.89