Символы трубы |
в этом случае не имеют значения по умолчанию «соответствовать тому или другому», но используются в качестве альтернативных разделителей для шаблона вместо более распространенных косых черт /
. Это может иметь смысл, если вы хотите совпадать с /
без необходимости избегать этих появлений (например, /(.\*)\/(.\*)\//
не так читабельно, как #/(.\*)/(.\*)/#
). Кажется, довольно непродуктивно использовать вместо этого |
, который является еще одним зарезервированным символом для паттернов.
Обычно $1
в шаблоне замены должно соответствовать первой группе, обозначенной скобками. Например, если у вас есть шаблон как
"(.*)<p>"
$0
будет содержать все совпадение, а $1
часть до <p>
.
Поскольку данный reg-ex не объявляет какие-либо группы и $1
не является допустимым именем для переменной (в PHP4), определенной в другом месте, этот вызов, кажется, заменяет любые вхождения <p>
на <p>
?
Если честно, теперь я тоже в замешательстве. Просто предположение: получает другой метод сопоставления с образцом (preg_match и тому подобное), вызываемый перед данной строкой, так что $1
оттуда "просочилась"?