Нет, смещение не игнорируется, но эти утверждения относятся ко всей строке, а не к строке, начинающейся со смещения. Таким образом, вы можете получить другой результат в зависимости от того, передаете ли вы подстроку или используете аргумент offset. В частности, ^
соответствует началу строки, а не положению смещения.
В приведенном ниже примере цитируемой линии делает это ясно:
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);
Это не находит совпадение, потому что даже если def
находится по смещению 3 в строке, это не в начале строки.
Если смещение было просто проигнорировано, вы можете использовать шаблон, такой как /^abc/
, и он будет соответствовать. Но это тоже не будет соответствовать, потому что abc
до смещения.
тогда как этот параметр когда-либо полезен, если подобные утверждения могут привести к его несоответствию –
Это полезно для других регулярных выражений. – Barmar
Образец будет соответствовать, если делать '; preg_match ($ pattern, substr ($ subject, 3), $ matches, PREG_OFFSET_CAPTURE); ' –