Приклади регулярок PHP8 на усі випадки життя
Підбірка прикладів використання регулярки в роботі PHP кодера для маніпуляції даними які впадло шукати, або для створення масок
Регулярні вирази - розшифровка
(?<!\d|\d-) - заперечний блок попереднього перегляду назад, який скасовує збіг, одразу перед яким є цифра або цифра + дефіс
(?:\+7|8) - плюс + 7 чи 8
(?:-?\d) {9,10} - 9 або 10 повторів необов'язкового дефісу та однієї цифри
(?!-?\d) - заперечний блок попереднього перегляду вперед, який скасовує збіг, відразу після якого є цифра або дефіс + цифра.
//Реглярка для видалення коментарів з HTML документів
/<!--(.*?)-->/
// Отримати заголовок
/<title>([^<>]*?)</title>/
// провірка на розширення файла
/^(?:.*\.(?=(htm|html|class|js)$))?[^.]*$/i
// провірка на протокол
/^([a-zA-Z]+):\/\//
// провірка на адрес зображення
/\< *[img][^\>]*[src] *= *[\"\']{0,1}([^\"\'\ >]*)/
/* отримання CSS властивості типу .element {
background: black;
font-size: 16px;
} */
/\s*[a-zA-Z\-]+\s*[:]{1}\s[a-zA-Z0-9\s.#]+[;]{1}/gm
// Отримання Медіа запитів
/@media([^{]+)\{([\s\S]+?})\s*}/g
Усі кириличні + англ літери + знаки:
$chr_ru_en = "A-Za-zА-Яа-яЁё0-9\s`~!@#$%^&*()_+-={}|:;<>?,.\/\"\'\\\[\]";
if (preg_match("/^[$chr_ru_en]+$/u", $string)) {
// TRUE
} else {
// FALSE
}
Провірка логіна:
/^[a-zA-Z0-9_-]{3,16}$/
Символи ^ і $ вказують початку і поклала край рядка, отже введений юзернейм буде перевірено на збіг повністю від першого до останнього символу.
Валідація email
/^[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]{2,4}$/i
Прапор i у регулярних виразах забезпечує реєстронезалежність порівняння.
Початкові та кінцеві пробіли:
/^[ \s]+|[ \s]+$/g
Квантификатор + соответствует инструкции {1,} – один и более символов.
Провірка на число:
/^\d{1,}$/
Провірити чи є строка url адресою:
/[-a-zA-Z0-9@:%_\+.~#?&\/=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&\/=]*)?/gi
Замінити «12:00:00» на «12:00»:
preg_replace("#(:\d+):\d+#", '$1', $row['time'])
Після крапки або коми додати символ пробілу.
preg_replace('/(\.|\,)([^\s])/ui', '$1 $2', $content)
Знайти усі посилання:
preg_match_all('#<a [^>]*href="(.*)"[^>]*>#Ui', $content , $url);
Додати до src картинки назву домену:
preg_replace('/src="(http:\/\/[^\/"]+\/?)?([^"]*)"/', "src=\"http://mysite.com/\\2\"", $text);
Вирізати всі зображення у тексті:
preg_replace("/<img (.*?)>/", '', $content)
Видалити всі визначення стилів Style:
preg_replace('/style=\"[^\"]*\"/', '', $string);
Видалити будь-який тег, наприклад, для заголовка H2:
preg_replace('#<h2[^>]*?>#is', '', $table);
preg_replace('#<\/h2>#is', '', $table);
Очищеня тегів таблиці:
// Видаляємо всі атрибути Table:
$table = preg_replace('#<table.*>#siU', '<table>', $table););
// Видаляємо всі атрибути TR:
$table = preg_replace('#<tr.*>#siU', '<tr>', $table);
// Видаляємо всі атрибути TD (крім colspan або rowspan):
$table = preg_replace('#<td[^>]+((colspan|rowspan)=[^\s>]+?)(|.*)>#siU', '<td \\1>', $ table);
Вибрати всі E-mail з тексту:
$text = 'Тут текст та поштова адреса test@gmail.com і ще одна адреса admin@mail.ru';
preg_match_all("/[a-z0-9_\-\.]+@[a-z0-9_^\.]+\.[a-z]{1,6}/ui", $text, $matches, PREG_PATTERN_ORDER);
foreach ($matches[0] as $key => $val) {
$email = filter_var($val, FILTER_VALIDATE_EMAIL);
if ($email) $output[] = $email;
}
Підсвітка слова - ipsum - в тексті:
$re = '/\b(ipsum)\b/i';
$text = 'Lorem ipsum dolor, lorem ipsum dolor.';
preg_replace($re, '<span style="background:#5fc9f6">1</span>', $text);
Ця регулярка вибирає у тексті всі посилання з протоколом http/https без атрибуту rel і додає його.
Додавання зовнішніх посилань атрибуту rel="nofollow"
$html = '<a href="https://site.com">site.com</a>,
<a href="my-site.com">my-site.com</a>,
<a href="https://site.com" rel="nofollow">site.com</a>';
$re = '/(<a\s*(?![^>]*\brel=)([^>]*\bhref=\"https?:\/\/[^"]+\"))/';
$result = preg_replace($re, '$1 rel="nofollow"', $html);