Именованные шаблоны
Posted in: Именованные шаблоны, By: admin, At: Апрель 5th, 2008
Великолепным и весьма полезным дополнением в PCRE является концепция именованных захватываемых групп (которые чаще называют именованными шаблонами). Такие фуппы позволяют вам обращаться к подшаблонам вашего выражения по произвольному имени вместо обращения но номеру позиции внутри регулярного выражения. Например, рассмотрим следующее регулярное выражение:
/AName=(.+)$/еперь вы должны нормально обращаться к подшаблону (.+) как к первому элементу массива совпадений, возвращенного функцией pregjnatch () (или как $1 в подстановке, выполненной через вызов pregjreplace О либо preg_replace_all ()).
Это все хорошо — по крайней мере, до тех пор, пока у вас есть только ограниченное число подшаблоиов, чьи позиции никогда не изменяются. Однако не удастся найти подстроку в позиции, которую нужно добавить к захватываемому подшаблону в начале регулярного выражения, уже содержащего шесть таких подстрок.
К счастью, эта проблема может быть решена раз и навсегда присвоением “имени” каждому подшаблону. Рассмотрим следующий шаблон:
/AName=(?P
Это создаст обратную ссылку внутри вашего выражения, которая может быть явно извлечена по имени thenarae. Если вы пропустите это выражение через функцию preg_match (), обратная ссылка будет вставлена в массив соответствий — как по номеру (с применением обычных правил нумерации), так и по имени. Если же, с другой стороны, вы пропустите его через pregjreplace (), то можете обратиться к нему, заключив в скобки и снабдив префиксом ?Р=. Например:
pregjreplace [”/”Name=(?P
Leave a Reply