😎 » PHP - FAQ » PHP в прикладах » Приклади регулярок PHP8 на усі випадки життя
82 0  

Приклади регулярок PHP8 на усі випадки життя

Підбірка прикладів використання регулярки в роботі PHP кодера am для маніпуляції даними які впадло шукати, або для створення масок

winked Регулярні вирази - розшифровка

(?<!\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}$/

bully Символи ^ і $ вказують початку і поклала край рядка, отже введений юзернейм буде перевірено на збіг повністю від першого до останнього символу.

Валідація email

/^[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]{2,4}$/i

fellow Прапор 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);




Залишити свій коментар:

Досвід у веброзробці:

2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2009
2023