Примеры регулярных выражений в PHP

Примеры регулярных выражений в PHP, подборка регулярных выражений, Удаление GET-параметров из URL, Найти mail адреса в тексте, Проверка имени файла, Ищем в тексте мобильные телефоны РФ при помощи php

Примеры регулярных выражений в PHP

» » Сообщение:

Для справки:

Код: Выделить всё Развернуть
. - (точка) соответствует любому символу.
{} - (фигурные скобки) нужны для обозначения количества необходимых символов. Например, w{3} - три буквы w подряд. Также есть диапозон z{2,5}, то есть z может повторяться от 2 до 5 раз.
| - (вертикальная черта) логическое или в регулярных выражениях.
\n - перевод строки
\r - так же перевод строки
\t - табуляция
\d - цифра
\D - только не цифра
\s - пробел
\S - только не пробел
\w - все буквы, цифры и знак подчеркивания "_"
\W - только не буква, цифра или подчеркивание
Модификаторы в конце выражения
/i - делает поиск по выражению регистронезависимым. Нет разницы между заглавным и прописным символом
/U - модификатор указывает на то, что результатом поиска должен быть самый короткий отрывок, удовлетворяющий маске поиска. Рекомендую всегда использовать данный модификатор
/m - этот модификатор позволяет искать отрезок текста только внутри одной строки
/s - поиск идёт всему тексту, не обращая внимания на переносы строк
/x - игнорируются пробельные символы, в том числе символы табуляции и перевода строки

Примеры preg_replace PHP

1. Удаляем определённую ссылку в переменной text

Код: Выделить всё Развернуть
$text = preg_replace("~<a href=\"http://www\.aaa\">[^<]+?</a>~",'',$text);

2. Удаляем комментарии в переменной text

Код: Выделить всё Развернуть
$text = preg_replace('#<!--.*-->#sUi', '', $text);

3. Удаляем спецсимволы

Код: Выделить всё Развернуть
$text = preg_replace ("~(\\\|\*|\?|\[|\?|\]|\(|\\\$|\))~", "",$text);

4. Удаляем всё, что между < >

Код: Выделить всё Развернуть
$text = preg_replace('/(<([^>]+)>)/U', '', $text);

5. Удаляем всё, что между <script> </script>

Код: Выделить всё Развернуть
$text = preg_replace('#<script[^>]*>.*?</script>#is', '', $text);

6. Удаляем конкретные символы из строки

Код: Выделить всё Развернуть
$text = str_replace('#39;', '', $text); // удаляем одинарные кавычки
$text = str_replace('&quot;', '', $text); // удаляем двойные кавычки
$text = str_replace('&amp;', '', $text); // удаляем амперсанд
$text = preg_replace('/([?!:^~|@№$–=+*&%.,;\[\]<>()_—«»#\/]+)/', '', $text); // удаляем недоспустимые символы

7. Удаляем пробелы по бокам строки и обычные пробелы

Код: Выделить всё Развернуть
$text = trim($text); // удаляем пробелы по бокам
$text = preg_replace('/ /', '', $text); // чистим обычные пробелы
$text = preg_replace("/ +/", " ", $text); // множественные пробелы заменяем на одинарные

8. Удаляем лишние переводы строк и переносы

Код: Выделить всё Развернуть
$text = preg_replace("/(\r\n){3,}/", "\r\n\r\n", $text); // убираем лишние переводы строк (больше 1 строки)

9. Удаляем расширения в названиях файлов

Код: Выделить всё Развернуть
$file = 'image.jpg';
$file = preg_replace("/.*?\./", '', $file); // выведет image

10. Создаём функцию обработки текста

Код: Выделить всё Развернуть
function ProcessText($text)
{
    $text = trim($text); // удаляем пробелы по бокам
    $text = stripslashes($text); // удаляем слэши
    $text = htmlspecialchars($text); // переводим HTML в текст
    $text = preg_replace("/ +/", " ", $text); // множественные пробелы заменяем на одинарные
    $text = preg_replace("/(\r\n){3,}/", "\r\n\r\n", $text); // убираем лишние переводы строк (больше 1 строки)
    $test = nl2br ($text); // заменяем переводы строк на тег
    $text = preg_replace("/^\"([^\"]+[^=><])\"/u", "$1«$2»", $text); // ставим людские кавычки
    $text = preg_replace("/(«){2,}/","«",$text); // убираем лишние левые кавычки (больше 1 кавычки)
    $text = preg_replace("/(»){2,}/","»",$text); // убираем лишние правые кавычки (больше 1 кавычки)     
    $text = preg_replace("/(\r\n){2,}/u", "</p><p />", $text); // ставим абзацы
    return $text; //возвращаем переменную
}

11. Найти содержимое определённого тега и вставить его в другие теги

Код: Выделить всё Развернуть
$string = preg_replace("!<title>(.*?)</title>!si","<НОВЫЙ_ТЕГ>\\1</НОВЫЙ_ТЕГ>",$string);

12. Удаляем многократно повторяющиеся знаки препинания (например, !!!! или ???!!)

Код: Выделить всё Развернуть
$text = preg_replace('#(\.|\?|!|\(|\)){3,}#', '\1\1\1', $text);

13. Добавить или убрать текст в начале или конце переменной с текстом

Код: Выделить всё Развернуть
$string = preg_replace("/^/", "Начало: ", $string); // в начало
$string = preg_replace("/$/", " читать далее...", $string); // в конец

14. Находим все http:// и заменяем на ссылки

Код: Выделить всё Развернуть
$text = preg_replace('#(?<!\])\bhttp://[^\s\[<]+#i',
    "<a href=\"$0\" target=_blank><u>Посмотреть на сайте</u></a>",
    nl2br(stripslashes($text)));

15. Удаление GET-параметров из URL

Код: Выделить всё Развернуть
$str = preg_replace('/^(.+?)(\?.*?)?(#.*)?$/', '$1$3', $url);

Примеры preg_match PHP

1. проверка mail адреса на корректность

Код: Выделить всё Развернуть
if (!preg_match("/^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$/i", $email)) exit("Не правильный адрес");

2. Найти mail адреса в тексте

Код: Выделить всё Развернуть
// \S означает "не пробел", а [a-z0-9.]+ -
// "любое число букв, цифр или точек". Модификатор 'i' после '/'
// заставляет PHP не учитывать регистр букв при поиске совпадений.
// Модификатор 's', стоящий рядом с 'i', говорит, что мы работаем
// в "однострочном режиме" (см. ниже в этой главе).
preg_match('/(\S+)@([a-z0-9.]+)/is', "Привет от somebody@mail.ru!", $p);
// Имя хоста будет в $p[2], а имя ящика (до @) - в $p[1].
echo "В тексте найдено: ящик - $p[1], хост - $p[2]";

3. Является ли переменная числом

Код: Выделить всё Развернуть
if (!preg_match("|^[\d]+$|", $var)) ...

4. Проверка имени файла

Код: Выделить всё Развернуть
if (preg_match("/(^[a-zA-Z0-9]+([a-zA-Z\_0-9\.-]*))$/" , $filename)==NULL) {
        echo "invalid filename";
        exit;
}

5. Ищем в тексте мобильные телефоны РФ

Код: Выделить всё Развернуть
preg_match_all('/(8|7|\+7){0,1}[- \\\\(]{0,}([9][0-9]{2})[- \\\\)]{0,}(([0-9]{2}[-
    ]{0,}[0-9]{2}[- ]{0,}[0-9]{3})|([0-9]{3}[- ]{0,}[0-9]{2}[- ]{0,}[0-9]{2})|([0-9]{3}[-
    ]{0,}[0-9]{1}[- ]{0,}[0-9]{3})|([0-9]{2}[- ]{0,}[0-9]{3}[- ]{0,}[0-9]{2}))/',
    $text, $regs );

...

регулярка, выражение, php, preg_replace, спецсимволы, переводы строк, переносы, расширения, функция, preg_match