Nein, der Offset wird nicht ignoriert, aber diese Assertionen gelten für den gesamten String, nicht für den String, der vom Offset ausgeht. Sie können also ein anderes Ergebnis erhalten, je nachdem, ob Sie eine Teilzeichenfolge übergeben oder das Offset-Argument verwenden. Insbesondere passt ^
den Anfang der Zeichenfolge, nicht die Offset-Position.
Im folgende Beispiel wird die zitierte Zeile macht dies deutlich:
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);
Dies keine Übereinstimmung finden, denn auch wenn def
bei 3 in der Zeichenfolge ist, ist es nicht am Anfang der Zeichenfolge ist.
Wenn der Offset einfach ignoriert würde, könnten Sie ein Muster wie /^abc/
verwenden und es würde übereinstimmen. Aber das wird auch nicht passen, weil abc
vor dem Offset ist.
dann, wie ist diese Option immer nützlich, wenn Behauptungen wie diese kann es zu nichts passen –
Es ist nützlich für andere reguläre Ausdrücke. – Barmar
Das Muster würde übereinstimmen, wenn es 'tut; preg_match ($ pattern, substr ($ subject, 3), $ Übereinstimmungen, PREG_OFFSET_CAPTURE); ' –