Preg_matchとpreg_match_allを使用して、指定された文字列内の正規表現パターンの実際の一致を見つける方法を知っていますが、私が書いている関数は一致のテキストを必要とするだけでなく、一致の周りの文字列をトラバースすることができます。 。
したがって、正規表現パターンに基づいて、文字列内の一致の位置を知る必要があります。
私は正規表現を可能にするstrpos()に似た関数を見つけることができないようです...何かアイデアはありますか?
フラグ PREG_OFFSET_CAPTURE
そのため:
preg_match('/(bar)/', 'Foobar', $matches, PREG_OFFSET_CAPTURE);
var_export($matches);
結果は次のとおりです。
array (
0 =>
array (
0 => 'bar',
1 => 3, // <-- the string offset of the match
),
1 =>
array (
0 => 'bar',
1 => 3,
),
)
preg_matchにはオプションのフラグPREG_OFFSET_CAPTURE
、元の「haystack」での一致の発生の文字列位置を記録します。 「フラグ」セクションを参照してください: http://php.net/preg_match
Preg_match()でPREG_OFFSET_CAPTUREを使用すると、パターンの一致回数を取得できます。一致する場合、これは0から始まるオフセット値を持ちます。
この値を使用すると、offsetパラメーターを使用してpreg_matchを再度呼び出すことができます。