CakeFest 2024: The Official CakePHP Conference

Комментарии

Служебная последовательность (?# обозначает начало комментария, который продолжается до ближайшей закрывающей скобки. Вложенные скобки не допускаются. Символы, находящиеся внутри комментария, не принимают участия в сопоставлении шаблона.

Если используется модификатор PCRE_EXTENDED, неэкранированный символ «#» вне символьного класса также означает начало блока комментария, который длится до конца текущей строки.

Пример #1 Использование комментариев в шаблоне PCRE

<?php

$subject
= 'test';

/* Последовательность (?# указывают, чтобы добавить комментарий без включения модификатора PCRE_EXTENDED */
$match = preg_match('/te(?# this is a comment)st/', $subject);
var_dump($match);

/* Пробелы и символы # рассматриваются как часть шаблона, если не включён модификатор PCRE_EXTENDED */
$match = preg_match('/te #~~~~
st/'
, $subject);
var_dump($match);

/* Когда модификатор PCRE_EXTENDED включён, пробелы и символы,
* которые идут за незаэкранированным символом #
* в той же строке, игнорируются
*/
$match = preg_match('/te #~~~~
st/x'
, $subject);
var_dump($match);

Результат выполнения приведённого примера:

int(1)
int(0)
int(1)

add a note

User Contributed Notes 1 note

up
-13
asamaru at asamaru dot net
7 years ago
<?php
$string
= 'test';
echo
preg_match('/te(?# comments)st/', $string) . "\n";
echo
preg_match('/te#~~~~
st/'
, $string) . "\n";
echo
preg_match('/te#~~~~
st/x'
, $string) . "\n";

// result
// 1
// 0
// 1
To Top