Регулярные выражения для того, чтобы оставить в строке PHP только цифры

Регулярные выражения для того, чтобы оставить в строке PHP только цифры

От автора: моя племянница решила стать писателем-фантастом. Это девятилетнее дарование несколько дней пыталась придумать сюжет будущего шедевра, не забывая попутно «пытать» и своих родственников. В результате она нафантазировала мир, в котором вместо букв используются цифры. Тогда в этой мире будут в PHP только цифры?

Наша реальность

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

С помощью PHP оставляем только цифры:

<?php
$str1 = "Начинается строка, в которой присутствуют цифры 12345";
$str = preg_replace("/[^0-9]/", '', $str1);
echo $str;
?>

Регулярные выражения для того, чтобы оставить в строке PHP только цифры

Теперь разберемся, что делает функция preg_replace(). Первым аргументом она принимает шаблон, по которому будет происходить поиск значений в строке $str1 (третий аргумент) и затем заменять найденное на второй аргумент (пробел).

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

Рассмотрим поближе регулярку: /[^0-9]/

В шаблоне указано, что нужно находить все символы, кроме цифр. В свою очередь preg_replace() нашла значения, соответствующие регулярному выражению и заменила на пробел. Таким образом мы реализовали ввод только цифр с помощью PHP.

Другие примеры

«Окунемся» глубже и модифицируем шаблон. Для этого используем в синтаксисе регулярных выражений метасимволы: \d – означает любую цифру, \D – обозначает любой символ, не являющийся цифрой.

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

<?php
$str1 = "Начинается строка, в которой присутствуют цифры 12345";

if(preg_match("/[\D]/",$str1))
{
 echo "Цифры есть в строке";
}

else
{ echo "Цифр нет в строке";
 }

?>

Регулярные выражения для того, чтобы оставить в строке PHP только цифры

Или так:

<?php
$str1 = "Начинается строка, в которой присутствуют цифры 12345";

if(preg_match("/[^\d]/",$str1))
{
 echo "Цифры есть в строке";
}

else
{ echo "Цифр нет в строке";
 }

?>

Регулярные выражения для того, чтобы оставить в строке PHP только цифры

Понятно, что в этом примере не используется регулярное выражение PHP только цифры оставляющее в строке. Тем не менее, такой вариант реализации тоже востребован. Его можно применять для проверки соблюдения пользователями синтаксиса пароля, устанавливаемого во время регистрации.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

Но вернемся к новой функции – preg_match(). В отличие от предыдущей эта ничего не меняет и не вырезает. Она лишь «отвечает», присутствует ли в строке $str1значение, которое подходит под регулярное выражение, переданное в качестве первого аргумента.

Также с помощью приведенных в примерах регулярок можно в PHP оставлять только цифры в строке. Рассмотрим шаблоны поближе:

/[^\d]/

/[\D]/

Самым коротким из них является второй вариант. В первом дополнительно используется символ отрицания («^»). Если он указан в начале шаблона, то это говорит о том, что нужно искать все кроме указанных далее диапазонов символов.

Обрезание строк

Но вернемся к выполнению нашей главной задачи – как в тексте с помощью PHP оставить только буквы и цифры. Поработаем теперь с диапазонами. В самом первом скрипте мы использовали регулярное выражение, в котором не применялись модификаторы: /[^0-9]/

То есть, все символы, кроме цифр от нуля и до 9. А можно ли сузить этот диапазон? Давайте пробовать методом «тыка» :) .

<?php
$str1 = "Начинается строка, в которой присутствуют цифры 123456789";
$str = preg_replace("/[^0-7]/", '', $str1);
echo $str;
?>

Регулярные выражения для того, чтобы оставить в строке PHP только цифры

Мы видим, что это работает, и нам удалось с помощью функции PHP preg replace оставить только цифры в заданном диапазоне. Но давайте разовьем успех, и двинемся в изысканиях дальше. Вот еще один примерчик:

<?php
$str1 = "Начинается строка, в которой присутствуют цифры 123456789, буквы и точки...";
$str = preg_replace("/[^0-7\.]/", '', $str1);
echo $str;
?>

Регулярные выражения для того, чтобы оставить в строке PHP только цифры

Нам удалось с помощью PHP оставить в строке только цифры и точки. Обратите внимание, что для указания точки в шаблоне мы экранировали ее правым слешем. Так как точка является метасимволом. Двигаемся еще в дебри, пока «прет» :) . Следующий пример:

<?php
$str1 = "Начинается строка string, в которой присутствуют цифры number 123456789,
буки точки...";
$str = preg_replace("/[^a-z\d]/",' ', $str1);
echo $str;
?>

Регулярные выражения для того, чтобы оставить в строке PHP только цифры

Ура! Мы научились оставлять в строке только латинские буквы и цифры c помощью PHP. В этом примере мы снова использовали диапазон символов, а также один из метасимволов.

Думаю, сегодняшнего «заплыва» в море регулярных выражений нам хватит с головой. А моя племянница уже работает над следующим своим творением :) .

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Хотите изучить регулярные выражения на PHP?

Прямо сейчас посмотрите 12-ти часовой курс по регулярным выражениям на PHP!

Смотреть курс

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree