Я новичок в регулярном выражении, и у меня есть это простое сомнение.
Я нашел этот код в wordpress
$self = preg_replace('|^.*/wp-admin/|i', '', $self);
согласно документу на php.net |
недопустимо как разделитель.
Может кто-нибудь объяснить код?
Ты это пробовал?
По вашей ссылке :
При использовании функций PCRE требуется, чтобы шаблон был заключен в разделители. Разделителем может быть любой символ, не являющийся буквенно-цифровым, без обратного слэш-символа.
Итак |
является вполне допустимым разделителем. Когда вы читаете комментарии на этой странице, они предлагают не использовать метасимволы (например, |
) в качестве разделителей, когда они должны использоваться внутри регулярного выражения.
Поскольку в вашем примере нет чередования $self = preg_replace('|^.*/wp-admin/|i', '', $self);
нет проблем, и он работает как ожидалось.
Когда у вас есть чередование в регулярном выражении (например, preg_match("|(F|f)oo|", "Foobar")
), вы получите предупреждение «Неизвестный модификатор« f », потому что интерпретатор считает, что регулярное выражение заканчивается на первое чередование.
Вывод: разрешено, но не рекомендуется использовать метасимволы регулярных выражений, такие как |
, ^
, +
, … как разделители регулярных выражений.