Регулярное выражение | Означает |
foo | Строка “foo” |
^foo | Строка начинается с “foo” |
foo$ | Строка заканчивается на “foo” |
^foo$ | «foo» встречается в строке только один раз |
[abc] | a, b, или c |
[a-z] | любой символ в нижнем регистре |
[^A-Z] | любой символ, не находящийся в верхнем регистре |
(gif|jpg) | Означает как «gif” так и “jpeg” |
[a-z]+ | Один или более символов нижнего регистра |
[0-9.-] | Любая цифра, точка или знак минус |
^[a-zA-Z0-9_]{1,}$ | Любое слово, хотя бы одна буква, число или _ |
([wx])([yz]) | wy, wz, xy, или xz |
(^A-Za-z0-9) | Любой символ (не число и не буква) |
([A-Z]{3}|[0-9]{4}) | Означает три буквы или 4 цифры |
PHP-функции для регулярных выражений
Функция | Описание |
preg_match() | Функция preg_match() ищет строку по заданному шаблону, возвращает true, если строка находится и false, в остальных случаях |
preg_match_all() | Функция preg_match_all() находит все вхождения строки, заданной по шаблону |
preg_replace() | Функция preg_replace(), действует по тому же принципу, что и ereg_replace(), за исключением того, что регулярные выражения можно использовать как для задания шаблона поиска, так и для строки, на которую следует заменить, найденное значение. |
preg_split() | Функция preg_split(), действует так же как split(), за исключением того, что регулярное выражение можно использовать в качестве параметра для шаблона поиска. |
preg_grep() | Функция preg_grep() ищет все элементы входного массива, возвращая все элементы, соответствующие шаблону регулярного выражения. |
preg_quote() | Экранирует символы регулярного выражения |
Проверка доменного имени
Проверяем, является ли строка правильным доменным именем
$url = "http://chyvakoff.px6.ru/"; if (preg_match('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i', $url)) { echo "Your url is ok."; } else { echo "Wrong url."; }
Подсветка слова в тексте
Это очень полезное регулярное выражение, с его помощью вы можете найти нужное слово и подсветить его. Особенно полезно для отображения результатов поиска.
$text = "Sample sentence from KomunitasWeb. Now we learn regex. Regular expressions (abbreviated as regex or regexp, with plural forms regexes, regexps, or regexen) are written in a formal language that can be interpreted by a regular expression processor"; echo $text;
Подсветка результатов поиска в WordPress блоге
Как уже говорилось в предыдущем примере, этот пример кода, удобно использовать в выдаче поисковых результатов и есть отличный способ внедрить эту функцию в wordpress-блог.
Откройте ваш файл search.php, и найдите функцию the_title(). Замените ее следующим кодом:
echo $title;
Теперь, выше этой строки, добавьте этот код:
$title = get_the_title(); '<strong class="search-excerpt">\0</strong>', $title);
Сохраните файл search.php, и откройте style.css. Добавьте следующую строку:
strong.search-excerpt { background: yellow; }
Получение всех картинок из HTML-документа
Если вам когда-нибудь требовалось получить все картинки с веб-страницы, этот код должен быть Вы легко сможете создать загрузчик изображений с помощью возможностей cURL
unset($data); $data=preg_replace('/(img|src)("|'|="|=')(.*)/i',"$3",$media[0]); foreach($data as $url) { $info = pathinfo($url); if (isset($info['extension'])) { if (($info['extension'] == 'jpg') || ($info['extension'] == 'jpeg') || ($info['extension'] == 'gif') || ($info['extension'] == 'png')) array_push($images, $url); } }
Удаление повторяющихся слов (не чувствителен к регистру)
Во время печатания, часто повторяются слова? Поможет это регулярное выражение.
Удаление повторяющейся пунктуации
То же самое, только для пунктуации. Попрощайтесь с двойными запятыми.
Поиск XML/HTML тэгов
Эта простая функция, принимает два аргумента. Первый – это тэг, который вам нужно найти, и второй – это переменная, содержащая XML или HTML. Повторюсь, эту функцию очень удобно использовать вместе с cURL.
function get_tag( $tag, $xml ) { $xml, $matches, PREG_PATTERN_ORDER); return $matches[1]; } </'.$tag.'[^>
Поиск XHTML/XML тэгов с определенным значением атрибута
Эта функция очень похожа на предыдущую, за исключением того, что вы можете задать тегу нужный атрибут. Например, вы легко сможете найти <div id=”header”>.
function get_tag( $attr, $value, $xml, $tag=null ) { $tag = '\w+'; else $tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*". "(['\"])$value\\2[^>]*>(.*?)<\/\\1>/" $xml, $matches, PREG_PATTERN_ORDER); return $matches[3]; } </\/\\1></(".$tag.")[^>
Поиск шестнадцатеричных значений цветов
Еще один полезный инструмент для веб-разработчика! Он позволяет вам находить/проверять шестнадцатеричные значение цвета.
$string = "#555555"; echo "example 6 successful."; }
Поиск заголовка статьи
Этот фрагмент кода найдет и выведет на экран текст, находящийся внутри тэгов <title></title>, на html-странице.
} echo $regs[1];
Парсинг логов Apache
Большинство сайтов запущено на всем известном веб-сервере Apache. Если ваш сайт находится в их числе, почему бы не использовать PHP и регулярные выражения для разбора логов апача?
//Logs: Apache web server //Successful hits to HTML files only. Useful for counting the number of page views. '^((?#client IP or domain name)S+)s+((?#basic authentication)S+s+S+)s+[((?#date and time)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)/[^ ?"]+?.html?)??((?#parameters)[^ ?"]+)? HTTP/[0-9.]+"s+(?#status code)200s+((?#bytes transferred)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent)[^"]*)"$' //Logs: Apache web server //404 errors only '^((?#client IP or domain name)S+)s+((?#basic authentication)S+s+S+)s+[((?#date and time)[^]]+)]s+"(?:GET|POST|HEAD) ((?#file)[^ ?"]+)??((?#parameters)[^ ?"]+)? HTTP/[0-9.]+"s+(?#status code)404s+((?#bytes transferred)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#user agent)[^"]*)"$'
Замена двойных кавычек “умными” кавычками
Если вы любитель типографики, вам понравится это регулярное выражение, заменяющее обычные двойные кавычки, на “умные кавычки”. Похожее регулярное выражение используется в wordpress в контенте страницы.
Комплексная проверка пароля
Это регулярное выражение будет следить за тем, чтобы в текстовое поле было введено не менее шести символов, цифры, дефисы и подчеркивания.
Текстовое поле должно содержать как минимум один символ верхнего регистра, один нижнего регистра и одну цифру.
'A(?=[-_a-zA-Z0-9]*?[A-Z])(?=[-_a-zA-Z0-9]*?[a-z])(?=[-_a-zA-Z0-9]*?[0-9])[-_a-zA-Z0-9]{6,}z'
WordPress: Использование регулярного выражения для получения картинок из записи
Поскольку многие из вас являются пользователями WordPress, вам возможно пригодится код, который позволяет получить все картинки, из текста статьи, и вывести их.
Для того, чтобы использовать этот код, просто вставьте его в любой файл вашей темы.
if (have_posts()) : while (have_posts()) : the_post(); $szPostContent = $post->post_content; $szSearchPattern = '~<img [^ />]* />~'; // Run preg_match_all to grab all the images and save the results in $aPics // Check to see if we have at least 1 image if ( $iNumberOfPics > 0 ) { // Now here you would do whatever you need to do with the images // For this example the images are just displayed for ( $i=0; $i < $iNumberOfPics ; $i++ ) { echo $aPics[0][$i]; }; }; endwhile; endif;
Генерация автоматических смайлов
Другая функция, используемая в wordpress – позволяет автоматически заменять символы смайлов на картинку смайла.
$texte='A text with a smiley :-)';