Регулярные выражения php шпаргалка

Шпаргалка по регулярным выражениям

Квантификаторы

АналогПримерОписание
?a?одно или ноль вхождений «а»
+a+одно или более вхождений «а»
*a*ноль или более вхождений «а»

Модификаторы

Символ «минус» (-) меред модификатором (за исключением U) создаёт его отрицание.

Спецсимволы

АналогОписание
()подмаска, вложенное выражение
[]групповой символ
количество вхождений от «a» до «b»
|логическое «или», в случае с односимвольными альтернативами используйте []
\экранирование спец символа
.любой сивол, кроме перевода строки
\d4десятичная цифра
\D[^\d]любой символ, кроме десятичной цифры
\fконец (разрыв) страницы
\nперевод строки
\pLбуква в кодировке UTF-8 при использовании модификатора u
\rвозврат каретки
\s[ \t\v\r\n\f]пробельный символ
\S[^\s]любой символ, кроме промельного
\tтабуляция
\w[0-9a-z_]любая цифра, буква или знак подчеркивания
\W[^\w]любой символ, кроме цифры, буквы или знака подчеркивания
\vвертикальная табуляция

Спецсимволы внутри символьного класса

ПримерОписание
^[^da]отрицание, любой символ кроме «d» или «a»
[a-z]интервал, любой симво от «a» до «z»

Позиция внутри строки

Якоря

Якоря в регулярных выражениях указывают на начало или конец чего-либо. Например, строки или слова. Они представлены определенными символами. К примеру, шаблон, соответствующий строке, начинающейся с цифры, должен иметь следующий вид:

Здесь символ ^ обозначает начало строки. Без него шаблон соответствовал бы любой строке, содержащей цифру.

Символьные классы

Символьные классы в регулярных выражениях соответствуют сразу некоторому набору символов. Например, \d соответствует любой цифре от 0 до 9 включительно, \w соответствует буквам и цифрам, а \W — всем символам, кроме букв и цифр. Шаблон, идентифицирующий буквы, цифры и пробел, выглядит так:

POSIX

POSIX — это относительно новое дополнение семейства регулярных выражений. Идея, как и в случае с символьными классами, заключается в использовании сокращений, представляющих некоторую группу символов.

Утверждения

Поначалу практически у всех возникают трудности с пониманием утверждений, однако познакомившись с ними ближе, вы будете использовать их довольно часто. Утверждения предоставляют способ сказать: «я хочу найти в этом документе каждое слово, включающее букву “q”, за которой не следует “werty”».

Итак, парсер проверяет несколько следующих символов по предложенному шаблону ( werty ). Если они найдены, то утверждение ложно, а значит символ q будет «проигнорирован», т. е. не будет соответствовать шаблону. Если же werty не найдено, то утверждение верно, и с q все в порядке. Затем продолжается поиск любых символов, кроме пробела ( [^\s]* ).

Кванторы

Кванторы позволяют определить часть шаблона, которая должна повторяться несколько раз подряд. Например, если вы хотите выяснить, содержит ли документ строку из от 10 до 20 (включительно) букв «a», то можно использовать этот шаблон:

Этот шаблон соответствует тексту, заключенному в двойные кавычки. Однако, ваша исходная строка может быть вроде этой:

Приведенный выше шаблон найдет в этой строке вот такую подстроку:

Он оказался слишком жадным, захватив наибольший кусок текста, который смог.

Экранирование в регулярных выражениях

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

Шаблон для нахождения точки таков:

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

Спецсимволы экранирования в регулярных выражениях

Подстановка строк

Подстановка строк подробно описана в следующем параграфе «Группы и диапазоны», однако здесь следует упомянуть о существовании «пассивных» групп. Это группы, игнорируемые при подстановке, что очень полезно, если вы хотите использовать в шаблоне условие «или», но не хотите, чтобы эта группа принимала участие в подстановке.

Группы и диапазоны

Группы и диапазоны очень-очень полезны. Вероятно, проще будет начать с диапазонов. Они позволяют указать набор подходящих символов. Например, чтобы проверить, содержит ли строка шестнадцатеричные цифры (от 0 до 9 и от A до F), следует использовать такой диапазон:

Чтобы проверить обратное, используйте отрицательный диапазон, который в нашем случае подходит под любой символ, кроме цифр от 0 до 9 и букв от A до F:

Группы наиболее часто применяются, когда в шаблоне необходимо условие «или»; когда нужно сослаться на часть шаблона из другой его части; а также при подстановке строк.

Использовать «или» очень просто: следующий шаблон ищет «ab» или «bc»:

Первым параметром будет примерно такой шаблон (возможно вам понадобятся несколько дополнительных символов для этой конкретной функции):

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

Модификаторы шаблонов

Модификаторы шаблонов используются в нескольких языках, в частности, в Perl. Они позволяют изменить работу парсера. Например, модификатор i заставляет парсер игнорировать регистры.

Регулярные выражения в Perl обрамляются одним и тем же символом в начале и в конце. Это может быть любой символ (чаще используется «/»), и выглядит все таким образом:

Модификаторы добавляются в конец этой строки, вот так:

Мета-символы

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

Шпаргалка представляет собой общее руководство по шаблонам регулярных выражений без учета специфики какого-либо языка. Она представлена в виде таблицы, помещающейся на одном печатном листе формата A4. Создана под лицензией Creative Commons на базе шпаргалки, автором которой является Dave Child. Скачать в PDF, PNG.

Источник

Регулярные выражения в PHP.

Регулярные выражения позволяют найти в строке последовательности, соответствующие шаблону. Например шаблон «Вася(.*)Пупкин» позволит найти последовательность когда между словами Вася и Пупкин будет любое количество любых символов. Если надо найти шесть цифр, то пишем «8<6>» (если, например, от шести до восьми цифр, тогда «9<6,8>«). Здесь разделены такие вещи как указатель набора символов и указатель необходимого количества:

Как всякий гибкий инструмент, регулярные выражения гибки, но не абсолютно: зона их применения ограничена. Например, если вам надо заменить в тексте одну фиксированную строку на другую, фиксированную опять же, пользуйтесь str_replace. Разработчики php слезно умоляют не пользоваться ради этого сложными функциями ereg_replace или preg_replace, ведь при их вызове происходит процесс интерпретации строки, а это серьезно потребляет ресурсы системы. К сожалению, это любимые грабли начинающих php-программистов.

Набор символов

Не пользуйтесь классом символов для обозначения всего лишь одного (вместо «[ ]+» вполне сойдет » +»). Не пишите в классе символов точку — это ведь любой символ, тогда другие символы в классе будут просто лишними (а в негативном классе получится отрицание всех символов).

Квантификатор

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

Если нужно указать только необходимый минимум, а максимума нет, просто ставим запятую и не пишем второе число: «<5,>» («минимум 5»). Для наиболее часто употребляемых квантификаторов есть специальные обозначения:

*«звёздочка» или знак умножения
+плюс
?вопросительный знак

На практике такие символы используются чаще, чем фигурные скобки.

Якоря

Эти символы должны стоять соответственно в самом начале и в самом конце строки.

Жадность

Вопросительный знак выступает еще и как минимизатор квантификатора:
.*?

Результат работы примера:

Строка шаблона, как вы уже заметили, начинается и заканчивается слэшами. После второго идут параметры:

многостроковый режим. По умолчанию PCRE ищет совпадения с шаблоном только внутри одной строки, а символы «^» и «$» совпадают только с началом и концом всего текста. Когда этот параметр установлен, «^» и «$» совпадают с началом и концом отдельных строк.

iрегистронезависимый поиск
m
sсимвол «.» (точка) совпадает и с переносом строки (по умолчанию — нет)
Aпривязка к началу текста
Eзаставляет символ «$» совпадать только с концом текста. Игнорируется, если установлен парамерт m.
UИнвертирует «жадность» для каждого квантификатора (если же после квантификатора стоит «?», этот квантификатор перестает быть «жадным»).
eСтрока замены интерпретитуется как PHP код.

Функции для работы с регулярными выражениями

preg_grep

array preg_grep (string pattern, array input [, int flags])

preg_grep() возвращает массив, состоящий из элементов входящего массива input, которые соответствуют заданному шаблону pattern.

Параметр flags может принимать следующие значения:

PREG_GREP_INVERT
В случае, если этот флаг установлен, функция preg_grep(), возвращает те элементы массива, которые не соответствуют заданному шаблону pattern.
Результат, возвращаемый функцией preg_grep() использует те же индексы, что и массив исходных данных. Если такое поведение вам не подходит, примените array_values() к массиву, возвращаемому preg_grep() для реиндексации.
Пример кода:

preg_match

int preg_match ( string pattern, string subject [, array matches [, int flags [, int offset]]]) Ищет в заданном тексте subject совпадения с шаблоном pattern

flags может принимать следующие значения:

Функция preg_match() возвращает количество найденных соответствий. Это может быть 0 (совпадения не найдены) и 1, поскольку preg_match() прекращает свою работу после первого найденного совпадения. Если необходимо найти либо сосчитать все совпадения, следует воспользоваться функцией preg_match_all(). Функция preg_match() возвращает FALSE в случае, если во время выполнения возникли какие-либо ошибки.

Рекомендация: Не используйте функцию preg_match(), если необходимо проверить наличие подстроки в заданной строке. Используйте для этого strpos() либо strstr(), поскольку они выполнят эту задачу гораздо быстрее.

Пример кода

Пример кода

Пример кода

preg_match_all

int preg_match_all (string pattern, string subject, array matches [, int flags [, int offset]])

Ищет в строке subject все совпадения с шаблоном pattern и помещает результат в массив matches в порядке, определяемом комбинацией флагов flags.

После нахождения первого соответствия последующие поиски будут осуществляться не с начала строки, а от конца последнего найденного вхождения.

Дополнительный параметр flags может комбинировать следующие значения (необходимо понимать, что использование PREG_PATTERN_ORDER одновременно с PREG_SET_ORDER бессмысленно):

Пример кода

Пример кода

В случае, если никакой флаг не используется, по умолчанию используется PREG_PATTERN_ORDER.

Возвращает количество найденных вхождений шаблона (может быть нулем) либо FALSE, если во время выполнения возникли какие-либо ошибки.

Пример кода

Пример кода

preg_quote

string preg_quote (string str [, string delimiter])

Функция preg_quote() принимает строку str и добавляет обратный слеш перед каждым служебным символом. Это бывает полезно, если в составлении шаблона участвуют строковые переменные, значение которых в процессе работы скрипта может меняться.

В случае, если дополнительный параметр delimiter указан, он будет также экранироваться. Это удобно для экранирования ограничителя, который используется в PCRE функциях. Наиболее распространенным ограничителем является символ ‘/’.

Пример кода

Пример кода

preg_replace

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])

При использовании замены по шаблону с использованием ссылок на подмаски может возникнуть ситуация, когда непосредственно за маской следует цифра. В таком случае нотация вида \\n приводит к ошибке: ссылка на первую подмаску, за которой следует цифра 1, запишется как \\11, что будет интерпретировано как ссылка на одиннадцатую подмаску. Это недоразумение можно устранить, если воспользоваться конструкцией \$<1>1, указывающей на изолированную ссылку на первую подмаску, и следующую за ней цифру 1.

Результатом работы этого примера будет:

Если во время выполнения функции были обнаружены совпадения с шаблоном, будет возвращено измененное значение subject, в противном случае будет возвращен исходный текст subject.

Первые три параметра функции preg_replace() могут быть одномерными массивами. В случае, если массив использует ключи, при обработке массива они будут взяты в том порядке, в котором они расположены в массиве. Указание ключей в массиве для pattern и replacement не является обязательным. Если вы все же решили использовать индексы, для сопоставления шаблонов и строк, участвующих в замене, используйте функцию ksort() для каждого из массивов.

В случае, если параметр subject является массивом, поиск и замена по шаблону производятся для каждого из его элементов. Возвращаемый результат также будет массивом.

Модификатор /e меняет поведение функции preg_replace() таким образом, что параметр replacement после выполнения необходимых подстановок интерпретируется как PHP-код и только после этого используется для замены. Используя данный модификатор, будьте внимательны: параметр replacement должен содержать корректный PHP-код, в противном случае в строке, содержащей вызов функции preg_replace(), возникнет ошибка синтаксиса.

Пример кода: Замена по нескольким шаблонам

Этот пример выведет:

Пример кода: Использование модификатора /e

Пример кода: Преобразует все HTML-теги к верхнему регистру

preg_replace_callback

mixed preg_replace_callback (mixed pattern, callback callback, mixed subject [, int limit])

Пример кода

preg_split

array preg_split (string pattern, string subject [, int limit [, int flags]])

Возвращает массив, состоящий из подстрок заданной строки subject, которая разбита по границам, соответствующим шаблону pattern.

flags может быть произвольной комбинацией следующих флагов (соединение происходит при помощи оператора ‘|’):

PREG_SPLIT_NO_EMPTY
В случае, если этот флаг указан, функция preg_split() вернет только непустые подстроки.

PREG_SPLIT_DELIM_CAPTURE
В случае, если этот флаг указан, выражение, заключенное в круглые скобки в разделяющем шаблоне, также извлекается из заданной строки и возвращается функцией. Этот флаг был добавлен в PHP 4.0.5.

Примеры кода

В случае, если после открывающей круглой скобки следует «?:«, захват строки не происходит, и текущая подмаска не нумеруется. Например, если строка «the white queen» сопоставляется с шаблоном the ((?:red|white) (king|queen)), будут захвачены подстроки «white queen» и «queen», и они будут пронумерованы 1 и 2 соответственно:

Источник

Регулярные выражения в PHP

Чтобы найти в строке какое-то совпадение, достаточно просто записать это совпадение внутри двух слэшей.

Её использование выглядит следующим образом:

Давайте приведём пример. Найдём, слово «век» в строке «человек».

Для того, чтобы быстрее составлять регулярки, есть онлайн-сервисы. Они позволяют не переписывать шаблон и запускать каждый раз код, а делать всё это прямо в браузере. Я неоднократно пользовался сервисом https://regex101.com/ и вам его рекомендую.

Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Я ввёл в шаблон «/ку/» и строку «кукушка». В результате получил 2 совпадения.

Помимо этого у сервиса есть вкладка «Code generator», на которой вы сразу сможете получить готовый код на PHP для своего примера:
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Символы

Давайте теперь перейдём к более интересным примерам.

Давайте найдём такие совпадения для строки «кукушки не кушают шоколадки». Паттерн примет следующий вид: «/к./». То есть буква «к» и любой символ.

Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Видим, что нашлось немало совпадений. Давайте добавим теперь после точки ещё одну букву «ш».

Теперь совпадения только два.
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Нужно найти несколько подряд идущих точек? Да не вопрос! Заэкранируйте их все:
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Квантификаторы

Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Если что-то должно повториться точное число раз, например, 3, то пишется просто <3>.

Есть также квантификаторы, которые используются чаще других и для них сделаны специальные символы:

Немного примеров:
Символ точки, повторяющийся от одного и более раз
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Восклицательный знак, перед которым либо есть вопросительный знак, либо нет
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Модификаторы

Глобальный поиск

А не обратили ли вы внимание на букву g после закрывающего слеша в паттерне?
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Видите? Теперь только одно совпадение осталось.

Жадность

Есть ещё один довольно популярный модификатор, который позволяет сделать поиск либо жадным, либо нежадным. Жадный поиск захватывает максимально возможную подстроку. Давайте рассмотрим вот такой пример:
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Видите, какую строку захватило? А если бы нам хотелось остановиться на первой букве «к»? Тогда нам просто нужно было бы сделать поиск нежадным. Для этого используется модификатор «U»
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

В PHP он при этом указывается после закрывающего слеша паттерна:

Вообще, все остальные модификаторы как и «U» указываются после слеша, это только для модификатора g пришлось сделать две разные функции.

Итак, давайте сформулируем основные тезисы по жадности и нежадности:

Классы символов

Очень часто в регулярках возникает потребность в перечислении символов, которые подходят под условия. Например, нужно найти символ двоеточия, после которого идут три цифры. Для таких случаев используют классы символов. Это символы, помещённые в квадратные скобки. Примеры таких классов:

Когда вы используете такой класс в шаблоне, это соответствует одному из символов из этого шаблона. Не нескольким, а одному из них! Чтобы было несколько, нужно использовать квантификаторы.

Пример: двоеточие, после которого идут три цифры от 0 до 3
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Если нужно сделать отрицание, то внутри таких кавычек перед остальными ставится символ «^».

Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Давайте теперь применим наши уже имеющиеся знания для проверки того, что нам передали корректный российский номер телефона. Пусть у нас будет следующее простое правило: номер должен начинаться с +7, а далее должны идти 10 цифр от 0 до 9.

Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Якоря в регулярных выражениях

Также нам часто приходится говорить о начале строки. Для этого есть якорь «^».
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Несмотря на то, что в строке есть два слова «кукушки», под шаблон попало только первое, так как оно находится в начале строки.

Давайте вернёмся к примеру с телефонами. В прошлый раз мы использовали шаблон «/+76<10>/». Однако, если строка содержит больше цифр в конце, то она просто отбросит лишнее.
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

По сути, этот телефон некорректный. Однако, с помощью якорей мы можем сделать так, что в строке будет только телефон, без лишней лабуды. Некорректный телефон не попадает в совпадение:
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

А корректный попадает:
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Многострочный режим

Если мы сейчас запишем несколько телефонов в разных строках, то не один не подпадёт под эту регулярку.
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

«ИЛИ» в регулярках

Для случаев, когда нам нужно использовать что-то на выбор, либо одно, либо другое, нужно использовать конструкцию вида:

Маски

Маски это очень крутая вещь в регулярках, которая используется повсеместно. Благодаря им можно не только проверить строку на соответствие шаблону, но и выделить из неё некоторые подстроки и использовать их отдельно!

Пример задачи: нужно из строки Меняем автора статьи 123 c «Иван» на «Пётр» извлечь идентификатор статьи и имена авторов.

Вот такие вот задачи в реальном программировании встречаются повсеместно и решаются именно регулярками с использованием масок. Для того, чтобы захватить определенную часть строки, нужно поместить эту часть шаблона в круглые скобки.

Нагляднее всего это можно увидеть на примере:
Регулярные выражения php шпаргалка. Смотреть фото Регулярные выражения php шпаргалка. Смотреть картинку Регулярные выражения php шпаргалка. Картинка про Регулярные выражения php шпаргалка. Фото Регулярные выражения php шпаргалка

Видите, справа у нас появились дополнительные совпадения? В PHP мы можем сделать из этого отдельные переменные!

Делается это проще простого:

Соответственно, нам остаётся лишь определить переменные под всё это дело:

А ещё маске можно дать имя прямо в шаблоне, вот так:

В коде будет выглядеть вот так:

И мы можем получить id статьи вот так:

Ещё один реальный пример

Практически на любом современном сайте все адреса вида: https://php.zone/post/892

Дальше он ищет статью в базе данных с таким идентификатором и возвращает её пользователю.

Это далеко не вся инфа о регулярках, но этого достаточно для 95% решения реальных задач. Забивать голову остальным и упарываться не советую 🙂

Домашка

У вас есть переменная

С помощью регулярных выражений выдерните из этой переменной 2 значения и положите их в переменные:

Источник

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

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