[PHP, Профессиональная литература] Книга «Создаем динамические веб-сайты на PHP. 4-е межд. изд.»
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
оригинал
Привет, Хаброжители! Сложно найти что-то толковое про PHP? Проверенная временем, обновленная в четвертом издании, эта книга помогает начинающим разработчикам научиться всему, что необходимо для создания качественных веб-приложений.
Вы начнете с общего описания технологии и постепенно перейдете к синтаксису языка, приемам программирования и другим важным деталям. При этом будут использоваться примеры, демонстрирующие и правильное применение языка, и распространенные идиомы. Предполагается, что читатель уже имеет опыт работы с HTML.
Вы получите множество рекомендаций по стилю программирования и процессу разработки ПО от Кевина Татро и Питера Макинтайра. Этот материал, изложенный в доступной и компактной форме, поможет вам овладеть мастерством программирования на PHP. • Общие сведения о том, какой результат можно получить, используя PHP. • Основы языка, включая типы данных, переменные, операторы, управляющие команды. • Функции, строки, массивы и объекты. • Решение распространенных задач разработки: обработка форм, проверка данных, отслеживание сеансовых данных и cookie. • Работа с реляционными базами данных (MySQL) и базами данных NoSQL (например MongoDB). • Генерирование изображений, создание файлов PDF, парсинг файлов XML. • Безопасность скриптов, обработка ошибок, оптимизация быстродействия и другие нетривиальные темы.
Для кого написана эта книга
SPL
PHP — это «плавильный котел» для смешения направлений программирования. Веб-дизайнеры ценят его за доступность и удобство, а программистам нравится его гибкость, мощность, разнообразие и скорость. Обоим направлениям необходим понятный и точный справочник по языку. Если вы (веб-)программист, то эта книга написана для вас. Мы представим общую картину языка PHP, а затем изложим подробности, не отнимая у вас лишнего времени. Многочисленные примеры, практические рекомендации по программированию и советы по стилю помогут вам стать не просто программистом PHP, а хорошим программистом PHP.
Веб-дизайнеры оценят доступные и практичные рекомендации по использованию конкретных технологий: JSON, XML, сеансовых данных, генерирования PDF, работы с графикой и т. д. Описание PHP и базовые концепции программирования изложены в книге доступным языком.
Регулярные выражения
Если вам понадобится более сложная функциональность поиска, которую не обеспечивают перечисленные методы, можно воспользоваться регулярным выражением — строкой, представляющей паттерн. Функции, использующие регулярные выражения, сравнивают строку с заданным паттерном. Одни функции сообщают, было ли найдено совпадение, а другие вносят изменения в строку.
В PHP регулярные выражения применяются: для поиска совпадений (и извлечения информации из строк), для замены текста в соответствии с паттерном и для разбиения строк на массив меньших фрагментов. Функция preg_match() выполняет поиск регулярного выражения.
Perl давно считается эталонным языком для работы с регулярными выражениями. В PHP используется библиотека C pcre, обеспечивающая почти полную поддержку возможностей регулярных выражений Perl, которые работают с произвольными двоичными данными и позволяют безопасно выполнять поиск по паттернам или в строках, содержащих нулевой байт (\x00).
Большинство символов в регулярных выражениях являются литеральными, что отражается на поиске совпадений. Например, если вы ищете совпадение для регулярного выражения "/cow/" в строке «Dave was a cowhand», то совпадение будет найдено, потому что последовательность символов «cow» встречается в этой строке.
Некоторые символы имеют специальный смысл в регулярных выражениях. Например, символ ^ в начале регулярного выражения означает, что совпадение должно начинаться от начала строки (а точнее, обозначает привязку регулярного выражения к началу строки).
preg_match("/^cow/", "Dave was a cowhand"); // возвращает false
preg_match("/^cow/", "cowabunga!"); // возвращает true
Аналогичным образом символ $ в конце регулярного выражения означает, что совпадение должно завершаться в конце строки (то есть обозначает привязку регулярного выражения к концу строки).
preg_match("/cow$/", "Dave was a cowhand"); // возвращает false
preg_match("/cow$/", "Don't have a cow"); // возвращает true
Точка в регулярном выражении обозначает один любой символ:
preg_match("/c.t/", "cat"); // возвращает true
preg_match("/c.t/", "cut"); // возвращает true
preg_match("/c.t/", "c t"); // возвращает true
preg_match("/c.t/", "bat"); // возвращает false
preg_match("/c.t/", "ct"); // возвращает false
Чтобы обозначить совпадение для одного из этих специальных символов (метасимволов), экранируйте его с помощью обратного слеша:
preg_match("/\$5.00/", "Your bill is $5.00 exactly"); // возвращает true
preg_match("/$5.00/", "Your bill is $5.00 exactly"); // возвращает false
Регулярные выражения по умолчанию учитывают регистр символов, поэтому регулярное выражение "/cow/" не совпадет со строкой «COW». Чтобы выполнить поиск совпадения символов без учета регистра, установите соответствующий флаг (показан далее в этой главе).
До сих пор мы не сделали ничего, что нельзя было бы сделать обычными строковыми функциями. Настоящая мощь регулярных выражений проявляется в возможности поиска совпадения разных последовательностей символов с абстрактными паттернами трех типов, к которым относятся:
1. Набор допустимых символов, которые могут присутствовать в строке (например, алфавитные символы, цифры, конкретные знаки препинания).
2. Набор альтернатив для строки (например, «com», «edu», «net» или «org»).
3. Повторяющиеся последовательности в строке (например, как минимум одна, но не более пяти цифр).
Эти три разновидности паттернов можно объединять бесчисленными способами и создавать регулярные выражения для таких конструкций, как телефонные номера и URL-адреса.
Символьные классы
Чтобы задать набор допустимых символов в паттерне, либо постройте символьный класс самостоятельно, либо примените готовый класс. Чтобы построить собственный класс, заключите допустимые символы в квадратные скобки:
preg_match("/c[aeiou]t/", "I cut my hand"); // возвращает true
preg_match("/c[aeiou]t/", "This crusty cat"); // возвращает true
preg_match("/c[aeiou]t/", "What cart?"); // возвращает false
preg_match("/c[aeiou]t/", "14ct gold"); // возвращает false
Движок регулярных выражений находит в строке символ «c», после чего проверяет, является ли следующий символ гласной буквой («a», «e», «i», «o» или «u»). Если нет, то движок переходит к поиску следующего символа «c». Если да, движок проверяет, является ли следующий символ буквой «t». Если совпадение обнаружено, движок возвращает true или, в противном случае, возобновляет поиск следующего символа «c».
Символьный класс можно инвертировать, поставив символ ^ в начало перечисления символов:
preg_match("/c[^aeiou]t/", "I cut my hand"); // возвращает false
preg_match("/c[^aeiou]t/", "Reboot chthon"); // возвращает true
preg_match("/c[^aeiou]t/", "14ct gold"); // возвращает false
В этом случае движок регулярных выражений ищет символ «c», за которым следует символ, не являющийся гласной буквой, после чего идет буква «t».
Символ — (дефис) в символьных классах используется для определения диапазонов символов. Он упрощает определение таких символьных классов, как «все буквы» и «все цифры»:
preg_match("/[0-9]%/", "we are 25% complete"); // возвращает true
preg_match("/[0123456789]%/", "we are 25% complete"); // возвращает true
preg_match("/[a-z]t/", "11th"); // возвращает false
preg_match("/[a-z]t/", "cat"); // возвращает true
preg_match("/[a-z]t/", "PIT"); // возвращает false
preg_match("/[a-zA-Z]!/", "11!"); // возвращает false
preg_match("/[a-zA-Z]!/", "stop!"); // возвращает true
Когда вы задаете символьный класс, некоторые специальные символы теряют свой смысл, тогда как другие, наоборот, приобретают новые роли. Так, якорный символ $ и точка теряют свои роли в символьных классах, тогда как символ ^ уже не обозначает привязку к началу строки, а инвертирует символьный класс, если является первым символом после открывающей квадратной скобки. Например, [^\]] совпадает с любым символом, кроме закрывающей квадратной скобки, тогда как [$.^] совпадает с любым из трех знаков (доллар, точка или крышка).
Различные библиотеки регулярных выражений определяют сокращения для символьных классов, включая цифры, алфавитные символы и пробелы.
Альтернативы
Символ | (вертикальная черта) используется для определения альтернатив в регулярных выражениях:
preg_match("/cat|dog/", "the cat rubbed my legs"); // возвращает true
preg_match("/cat|dog/", "the dog rubbed my legs"); // возвращает true
preg_match("/cat|dog/", "the rabbit rubbed my legs"); // возвращает false
Приоритет применения альтернатив может показаться странным: так, "/^cat|dog$/" выбирает один из двух вариантов — "^cat" и «dog$». Это означает, что совпадение будет найдено в строке, которая либо начинается с «cat», либо завершается «dog». Если вам нужна строка, содержащая только «cat» или «dog», используйте регулярное выражение "/^(cat|dog)$/".
Символьные классы и альтернативы могут применяться, например, для проверки строк, которые не должны начинаться с буквы в верхнем регистре:
preg_match("/^([a-z]|[0-9])/", "The quick brown fox"); // возвращает false
preg_match("/^([a-z]|[0-9])/", "jumped over"); // возвращает true
preg_match("/^([a-z]|[0-9])/", "10 lazy dogs"); // возвращает true
Повторяющиеся последовательности
Для определения паттернов с повторениями используются квантификаторы. Квантификатор определяет, сколько раз выбранный фрагмент должен повториться. В табл. 4.6 перечислены квантификаторы, поддерживаемые регулярными выражениями PHP.
Чтобы искать повторы отдельного символа, просто поставьте квантификатор за символом:
preg_match("/ca+t/", "caaaaaaat"); // возвращает true
preg_match("/ca+t/", "ct"); // возвращает false
preg_match("/ca?t/", "caaaaaaat"); // возвращает false
preg_match("/ca*t/", "ct"); // возвращает true
С квантификаторами и символьными классами можно решать такие задачи, как проверка на действительность телефонных номеров США:
preg_match("/[0-9]{3}-[0-9]{3}-[0-9]{4}/", "303-555-1212"); // возвращает true
preg_match("/[0-9]{3}-[0-9]{3}-[0-9]{4}/", "64-9-555-1234"); // возвращает false
Подпаттерны
Части регулярных выражений можно группировать в круглых скобках, чтобы они рассматривались как единое целое, то есть подпаттерн:
preg_match("/a (very )+big dog/", "it was a very very big dog"); // возвращает
true
preg_match("/^(cat|dog)$/", "cat"); // возвращает true
preg_match("/^(cat|dog)$/", "dog"); // возвращает true
Круглые скобки также обеспечивают сохранение (захват) совпадения для подпаттерна. Если передать функции поиска совпадения в третьем аргументе массив, этот массив будет заполнен подстроками совпадений:
preg_match("/([0-9]+)/", "You have 42 magic beans", $captured);
// возвращает true и заполняет $captured
Нулевому элементу массива присваивается вся строка, в которой ведется поиск совпадений. В первом элементе хранится подстрока, совпавшая с первым подпаттерном (если совпадение обнаружено), во втором — подстрока, совпавшая со вторым подпаттерном, и т. д.
Ограничители
Регулярные выражения в Perl эмулируют действия паттернов Perl, заимствуя из их синтаксиса ограничители. Чаще всего ограничителями выступают слеши (например, /паттерн/), реже — любой неалфавитно-цифровой символ, кроме обратного слеша. В частности, это удобно при поиске совпадений для строк, содержащих слеши. Например, следующие вызовы эквивалентны:
preg_match("/\/usr\/local\//", "/usr/local/bin/perl"); // возвращает true
preg_match("#/usr/local/#", "/usr/local/bin/perl"); // возвращает true
Скобки — круглые (), фигурные {}, квадратные [] и угловые <> — тоже могут использоваться в качестве ограничителей паттернов:
preg_match("{/usr/local/}", "/usr/local/bin/perl"); // возвращает true
В разделе «Флаги-модификаторы» рассматриваются односимвольные модификаторы, которые можно разместить после закрывающего ограничителя для изменения поведения движка регулярных выражений. Очень полезен флаг x, который заставляет движок отсекать пробелы и комментарии, отмеченные #, из регулярных выражений перед поиском совпадения.
Следующие два паттерна эквивалентны, но второй читается намного проще:
'/([[:alpha:]]+)\s+\1/'
'/( # начать сохранение
[[:alpha:]]+ # слово
\s+ # пробел
\1 # снова то же слово
) # завершить сохранение
/x'
Поведение при поиске совпадения
Точка. совпадает с любым символом, кроме символа новой строки (\n). Знак $ совпадает с концом строки или, если строка завершается символом новой строки, с позицией, непосредственно предшествующей этому символу:
preg_match("/is (.*)$/", "the key is in my pants", $captured);
// $captured[1] содержит 'in my pants'
Символьные классы
Как видно из табл. 4.7, Perl-совместимые регулярные выражения определяют несколько именованных наборов символов, которые можно использовать в символьных классах. В табл. 4.7 приведены расширения только для английского языка, но фактически буквы можно взять из других локальных контекстов.
Каждый класс [: что-то :] может использоваться вместо символа в символьном классе. Например, для нахождения любого символа, который является цифрой, буквой верхнего регистра или символом @, используйте следующее регулярное выражение:
[@[:digit:][:upper:]]
Однако символьный класс не может использоваться как конечная точка диапазона:
preg_match("/[A-[:lower:]]/", «string»);// недопустимое регулярное выражение
Символьная последовательность, которая в локальном контексте рассматривается как один символ, называется сверткой. Чтобы найти совпадение для одной из многосимвольных последовательностей в символьном классе, заключите ее в маркеры [. и .]. Например, если в локальном контексте присутствует свертка ch, следующий символьный класс будет совпадать с s, t или ch:
[st[.ch.]]
Последнее расширение символьных классов — класс эквивалентности, для определения которого символы заключаются в [= и =]. Классы эквивалентности совпадают с символами, имеющими одинаковый приоритет упорядочения по правилам локального контекста. Например, локальный контекст может определять, что символы a, á и ä имеют одинаковый приоритет упорядочения при сортировке. Чтобы найти совпадение для любого из них, используйте класс эквивалентности [=a=].
Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок
Для Хаброжителей скидка 25% по купону — PHP
По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
===========
Источник:
habr.com
===========
Похожие новости:
- [Perl, Ruby, PHP, Python, JavaScript] Насколько вам наплевать на фичи последней версии языка?
- [CMS, PHP, MySQL, JavaScript] CS Cart или через терни к черной дыре костылей и оптимизаций
- [Профессиональная литература] Безопасно by design. Антракт: анти-«Гамлет»
- [Python, Профессиональная литература] Книга «Обработка естественного языка. Python и spaCy на практике»
- [Big Data, Профессиональная литература, Машинное обучение, Статистика в IT] Книга «Байесовская статистика: Star Wars, LEGO, резиновые уточки и многое другое»
- [PHP, Фриланс, Карьера в IT-индустрии, Бизнес-модели] Сайт сына маминой подруги
- [Высокая производительность, Разработка веб-сайтов, PHP, Magento] PHP-SPX простой профайлер трейсер для PHP
- [Разработка веб-сайтов, PHP, Symfony, Конференции] Прямой эфир про тесты, трейты, devops в монолите, переход на Go и KPHP с казанского PHP-митапа
- [PHP] Алгоритм вычисления арифметического выражения в виде строки
- [Разработка веб-сайтов, PHP, Программирование, Будущее здесь] Мир изменился — CQRS и ES встречаются в PHP чаще, чем кажется
Теги для поиска: #_php, #_professionalnaja_literatura (Профессиональная литература), #_kniga (Книга), [url=https://torrents-local.xyz/search.php?nm=%23_blog_kompanii_izdatelskij_dom_«piter»&to=0&allw=0&o=1&s=0&f%5B%5D=820&f%5B%5D=959&f%5B%5D=958&f%5B%5D=872&f%5B%5D=967&f%5B%5D=954&f%5B%5D=885&f%5B%5D=882&f%5B%5D=863&f%5B%5D=881&f%5B%5D=860&f%5B%5D=884&f%5B%5D=865&f%5B%5D=873&f%5B%5D=861&f%5B%5D=864&f%5B%5D=883&f%5B%5D=957&f%5B%5D=859&f%5B%5D=966&f%5B%5D=956&f%5B%5D=955]#_blog_kompanii_izdatelskij_dom_«piter» (
Блог компании Издательский дом «Питер»
)[/url], #_php, #_professionalnaja_literatura (
Профессиональная литература
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:54
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
оригинал Привет, Хаброжители! Сложно найти что-то толковое про PHP? Проверенная временем, обновленная в четвертом издании, эта книга помогает начинающим разработчикам научиться всему, что необходимо для создания качественных веб-приложений. Вы начнете с общего описания технологии и постепенно перейдете к синтаксису языка, приемам программирования и другим важным деталям. При этом будут использоваться примеры, демонстрирующие и правильное применение языка, и распространенные идиомы. Предполагается, что читатель уже имеет опыт работы с HTML. Вы получите множество рекомендаций по стилю программирования и процессу разработки ПО от Кевина Татро и Питера Макинтайра. Этот материал, изложенный в доступной и компактной форме, поможет вам овладеть мастерством программирования на PHP. • Общие сведения о том, какой результат можно получить, используя PHP. • Основы языка, включая типы данных, переменные, операторы, управляющие команды. • Функции, строки, массивы и объекты. • Решение распространенных задач разработки: обработка форм, проверка данных, отслеживание сеансовых данных и cookie. • Работа с реляционными базами данных (MySQL) и базами данных NoSQL (например MongoDB). • Генерирование изображений, создание файлов PDF, парсинг файлов XML. • Безопасность скриптов, обработка ошибок, оптимизация быстродействия и другие нетривиальные темы. Для кого написана эта книгаSPLPHP — это «плавильный котел» для смешения направлений программирования. Веб-дизайнеры ценят его за доступность и удобство, а программистам нравится его гибкость, мощность, разнообразие и скорость. Обоим направлениям необходим понятный и точный справочник по языку. Если вы (веб-)программист, то эта книга написана для вас. Мы представим общую картину языка PHP, а затем изложим подробности, не отнимая у вас лишнего времени. Многочисленные примеры, практические рекомендации по программированию и советы по стилю помогут вам стать не просто программистом PHP, а хорошим программистом PHP.
Веб-дизайнеры оценят доступные и практичные рекомендации по использованию конкретных технологий: JSON, XML, сеансовых данных, генерирования PDF, работы с графикой и т. д. Описание PHP и базовые концепции программирования изложены в книге доступным языком. Регулярные выражения Если вам понадобится более сложная функциональность поиска, которую не обеспечивают перечисленные методы, можно воспользоваться регулярным выражением — строкой, представляющей паттерн. Функции, использующие регулярные выражения, сравнивают строку с заданным паттерном. Одни функции сообщают, было ли найдено совпадение, а другие вносят изменения в строку. В PHP регулярные выражения применяются: для поиска совпадений (и извлечения информации из строк), для замены текста в соответствии с паттерном и для разбиения строк на массив меньших фрагментов. Функция preg_match() выполняет поиск регулярного выражения. Perl давно считается эталонным языком для работы с регулярными выражениями. В PHP используется библиотека C pcre, обеспечивающая почти полную поддержку возможностей регулярных выражений Perl, которые работают с произвольными двоичными данными и позволяют безопасно выполнять поиск по паттернам или в строках, содержащих нулевой байт (\x00). Большинство символов в регулярных выражениях являются литеральными, что отражается на поиске совпадений. Например, если вы ищете совпадение для регулярного выражения "/cow/" в строке «Dave was a cowhand», то совпадение будет найдено, потому что последовательность символов «cow» встречается в этой строке. Некоторые символы имеют специальный смысл в регулярных выражениях. Например, символ ^ в начале регулярного выражения означает, что совпадение должно начинаться от начала строки (а точнее, обозначает привязку регулярного выражения к началу строки). preg_match("/^cow/", "Dave was a cowhand"); // возвращает false
preg_match("/^cow/", "cowabunga!"); // возвращает true Аналогичным образом символ $ в конце регулярного выражения означает, что совпадение должно завершаться в конце строки (то есть обозначает привязку регулярного выражения к концу строки). preg_match("/cow$/", "Dave was a cowhand"); // возвращает false
preg_match("/cow$/", "Don't have a cow"); // возвращает true Точка в регулярном выражении обозначает один любой символ: preg_match("/c.t/", "cat"); // возвращает true
preg_match("/c.t/", "cut"); // возвращает true preg_match("/c.t/", "c t"); // возвращает true preg_match("/c.t/", "bat"); // возвращает false preg_match("/c.t/", "ct"); // возвращает false Чтобы обозначить совпадение для одного из этих специальных символов (метасимволов), экранируйте его с помощью обратного слеша: preg_match("/\$5.00/", "Your bill is $5.00 exactly"); // возвращает true
preg_match("/$5.00/", "Your bill is $5.00 exactly"); // возвращает false Регулярные выражения по умолчанию учитывают регистр символов, поэтому регулярное выражение "/cow/" не совпадет со строкой «COW». Чтобы выполнить поиск совпадения символов без учета регистра, установите соответствующий флаг (показан далее в этой главе). До сих пор мы не сделали ничего, что нельзя было бы сделать обычными строковыми функциями. Настоящая мощь регулярных выражений проявляется в возможности поиска совпадения разных последовательностей символов с абстрактными паттернами трех типов, к которым относятся: 1. Набор допустимых символов, которые могут присутствовать в строке (например, алфавитные символы, цифры, конкретные знаки препинания). 2. Набор альтернатив для строки (например, «com», «edu», «net» или «org»). 3. Повторяющиеся последовательности в строке (например, как минимум одна, но не более пяти цифр). Эти три разновидности паттернов можно объединять бесчисленными способами и создавать регулярные выражения для таких конструкций, как телефонные номера и URL-адреса. Символьные классы Чтобы задать набор допустимых символов в паттерне, либо постройте символьный класс самостоятельно, либо примените готовый класс. Чтобы построить собственный класс, заключите допустимые символы в квадратные скобки: preg_match("/c[aeiou]t/", "I cut my hand"); // возвращает true
preg_match("/c[aeiou]t/", "This crusty cat"); // возвращает true preg_match("/c[aeiou]t/", "What cart?"); // возвращает false preg_match("/c[aeiou]t/", "14ct gold"); // возвращает false Движок регулярных выражений находит в строке символ «c», после чего проверяет, является ли следующий символ гласной буквой («a», «e», «i», «o» или «u»). Если нет, то движок переходит к поиску следующего символа «c». Если да, движок проверяет, является ли следующий символ буквой «t». Если совпадение обнаружено, движок возвращает true или, в противном случае, возобновляет поиск следующего символа «c». Символьный класс можно инвертировать, поставив символ ^ в начало перечисления символов: preg_match("/c[^aeiou]t/", "I cut my hand"); // возвращает false
preg_match("/c[^aeiou]t/", "Reboot chthon"); // возвращает true preg_match("/c[^aeiou]t/", "14ct gold"); // возвращает false В этом случае движок регулярных выражений ищет символ «c», за которым следует символ, не являющийся гласной буквой, после чего идет буква «t». Символ — (дефис) в символьных классах используется для определения диапазонов символов. Он упрощает определение таких символьных классов, как «все буквы» и «все цифры»: preg_match("/[0-9]%/", "we are 25% complete"); // возвращает true
preg_match("/[0123456789]%/", "we are 25% complete"); // возвращает true preg_match("/[a-z]t/", "11th"); // возвращает false preg_match("/[a-z]t/", "cat"); // возвращает true preg_match("/[a-z]t/", "PIT"); // возвращает false preg_match("/[a-zA-Z]!/", "11!"); // возвращает false preg_match("/[a-zA-Z]!/", "stop!"); // возвращает true Когда вы задаете символьный класс, некоторые специальные символы теряют свой смысл, тогда как другие, наоборот, приобретают новые роли. Так, якорный символ $ и точка теряют свои роли в символьных классах, тогда как символ ^ уже не обозначает привязку к началу строки, а инвертирует символьный класс, если является первым символом после открывающей квадратной скобки. Например, [^\]] совпадает с любым символом, кроме закрывающей квадратной скобки, тогда как [$.^] совпадает с любым из трех знаков (доллар, точка или крышка). Различные библиотеки регулярных выражений определяют сокращения для символьных классов, включая цифры, алфавитные символы и пробелы. Альтернативы Символ | (вертикальная черта) используется для определения альтернатив в регулярных выражениях: preg_match("/cat|dog/", "the cat rubbed my legs"); // возвращает true
preg_match("/cat|dog/", "the dog rubbed my legs"); // возвращает true preg_match("/cat|dog/", "the rabbit rubbed my legs"); // возвращает false Приоритет применения альтернатив может показаться странным: так, "/^cat|dog$/" выбирает один из двух вариантов — "^cat" и «dog$». Это означает, что совпадение будет найдено в строке, которая либо начинается с «cat», либо завершается «dog». Если вам нужна строка, содержащая только «cat» или «dog», используйте регулярное выражение "/^(cat|dog)$/". Символьные классы и альтернативы могут применяться, например, для проверки строк, которые не должны начинаться с буквы в верхнем регистре: preg_match("/^([a-z]|[0-9])/", "The quick brown fox"); // возвращает false
preg_match("/^([a-z]|[0-9])/", "jumped over"); // возвращает true preg_match("/^([a-z]|[0-9])/", "10 lazy dogs"); // возвращает true Повторяющиеся последовательности Для определения паттернов с повторениями используются квантификаторы. Квантификатор определяет, сколько раз выбранный фрагмент должен повториться. В табл. 4.6 перечислены квантификаторы, поддерживаемые регулярными выражениями PHP. Чтобы искать повторы отдельного символа, просто поставьте квантификатор за символом: preg_match("/ca+t/", "caaaaaaat"); // возвращает true
preg_match("/ca+t/", "ct"); // возвращает false preg_match("/ca?t/", "caaaaaaat"); // возвращает false preg_match("/ca*t/", "ct"); // возвращает true С квантификаторами и символьными классами можно решать такие задачи, как проверка на действительность телефонных номеров США: preg_match("/[0-9]{3}-[0-9]{3}-[0-9]{4}/", "303-555-1212"); // возвращает true
preg_match("/[0-9]{3}-[0-9]{3}-[0-9]{4}/", "64-9-555-1234"); // возвращает false Подпаттерны Части регулярных выражений можно группировать в круглых скобках, чтобы они рассматривались как единое целое, то есть подпаттерн: preg_match("/a (very )+big dog/", "it was a very very big dog"); // возвращает
true preg_match("/^(cat|dog)$/", "cat"); // возвращает true preg_match("/^(cat|dog)$/", "dog"); // возвращает true Круглые скобки также обеспечивают сохранение (захват) совпадения для подпаттерна. Если передать функции поиска совпадения в третьем аргументе массив, этот массив будет заполнен подстроками совпадений: preg_match("/([0-9]+)/", "You have 42 magic beans", $captured);
// возвращает true и заполняет $captured Нулевому элементу массива присваивается вся строка, в которой ведется поиск совпадений. В первом элементе хранится подстрока, совпавшая с первым подпаттерном (если совпадение обнаружено), во втором — подстрока, совпавшая со вторым подпаттерном, и т. д. Ограничители Регулярные выражения в Perl эмулируют действия паттернов Perl, заимствуя из их синтаксиса ограничители. Чаще всего ограничителями выступают слеши (например, /паттерн/), реже — любой неалфавитно-цифровой символ, кроме обратного слеша. В частности, это удобно при поиске совпадений для строк, содержащих слеши. Например, следующие вызовы эквивалентны: preg_match("/\/usr\/local\//", "/usr/local/bin/perl"); // возвращает true
preg_match("#/usr/local/#", "/usr/local/bin/perl"); // возвращает true Скобки — круглые (), фигурные {}, квадратные [] и угловые <> — тоже могут использоваться в качестве ограничителей паттернов: preg_match("{/usr/local/}", "/usr/local/bin/perl"); // возвращает true
В разделе «Флаги-модификаторы» рассматриваются односимвольные модификаторы, которые можно разместить после закрывающего ограничителя для изменения поведения движка регулярных выражений. Очень полезен флаг x, который заставляет движок отсекать пробелы и комментарии, отмеченные #, из регулярных выражений перед поиском совпадения. Следующие два паттерна эквивалентны, но второй читается намного проще: '/([[:alpha:]]+)\s+\1/'
'/( # начать сохранение [[:alpha:]]+ # слово \s+ # пробел \1 # снова то же слово ) # завершить сохранение /x' Поведение при поиске совпадения Точка. совпадает с любым символом, кроме символа новой строки (\n). Знак $ совпадает с концом строки или, если строка завершается символом новой строки, с позицией, непосредственно предшествующей этому символу: preg_match("/is (.*)$/", "the key is in my pants", $captured);
// $captured[1] содержит 'in my pants' Символьные классы Как видно из табл. 4.7, Perl-совместимые регулярные выражения определяют несколько именованных наборов символов, которые можно использовать в символьных классах. В табл. 4.7 приведены расширения только для английского языка, но фактически буквы можно взять из других локальных контекстов. Каждый класс [: что-то :] может использоваться вместо символа в символьном классе. Например, для нахождения любого символа, который является цифрой, буквой верхнего регистра или символом @, используйте следующее регулярное выражение: [@[:digit:][:upper:]] Однако символьный класс не может использоваться как конечная точка диапазона: preg_match("/[A-[:lower:]]/", «string»);// недопустимое регулярное выражение Символьная последовательность, которая в локальном контексте рассматривается как один символ, называется сверткой. Чтобы найти совпадение для одной из многосимвольных последовательностей в символьном классе, заключите ее в маркеры [. и .]. Например, если в локальном контексте присутствует свертка ch, следующий символьный класс будет совпадать с s, t или ch: [st[.ch.]] Последнее расширение символьных классов — класс эквивалентности, для определения которого символы заключаются в [= и =]. Классы эквивалентности совпадают с символами, имеющими одинаковый приоритет упорядочения по правилам локального контекста. Например, локальный контекст может определять, что символы a, á и ä имеют одинаковый приоритет упорядочения при сортировке. Чтобы найти совпадение для любого из них, используйте класс эквивалентности [=a=]. Более подробно с книгой можно ознакомиться на сайте издательства » Оглавление » Отрывок Для Хаброжителей скидка 25% по купону — PHP По факту оплаты бумажной версии книги на e-mail высылается электронная книга. =========== Источник: habr.com =========== Похожие новости:
Блог компании Издательский дом «Питер» )[/url], #_php, #_professionalnaja_literatura ( Профессиональная литература ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:54
Часовой пояс: UTC + 5