регулярное выражение инкапсуляции php - PullRequest
2 голосов
/ 18 сентября 2009

Каковы отличия за / против использования '/' или '#' в качестве инкапсуляции регулярного выражения

, например

'/' = preg_match('/MYSEARCH}(.+)ENDMYSEARCH/s',$out,$matches);

'#' = preg_match('#MYSEARCH}(.+)ENDMYSEARCH#s',$out,$matches);

Спасибо!

Ответы [ 2 ]

7 голосов
/ 18 сентября 2009

Единственное, что имеет значение для PHP / PCRE, это то, что вы должны использовать один и тот же символ в начале и в конце .

Вам важно сбежать: внутри регулярного выражения вы должны выйти из разделителя, если хотите его использовать.

Например, чтобы сопоставить часть URL-адреса, используя / в качестве разделителя, вы можете выглядеть следующим образом:

'/^http:\/\/www/'

Используя / в качестве разделителя, вы должны избегать косых черт, которые находятся внутри регулярного выражения - это нелегко и выглядит не очень хорошо.

С другой стороны, используя # в качестве разделителя:

'#http://www#'

Гораздо проще писать и читать, не так ли?


В зависимости от ваших потребностей и / или предпочтений, вы можете использовать любой символ, какой захотите - я иногда вижу '!' или '~', например.

1 голос
/ 18 сентября 2009

Также помните, что с помощью preg_quote вы можете добавить разделитель для экранирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...