文字列内のすべての一致を検索しようとしています。何らかの理由で、私の一致が文字列の先頭にある場合、その特定の一致は返されません。インデックス0と関係がありますか?また、PREG_OFFSET_CAPTUREを使用して、インデックスと一致を取得しています。以下は、動作しない動作のコードです。
$text = '[QUOTE]I wonder why[QUOTE]PHP[IMG]hates me[/IMG][/QUOTE][/QUOTE][URL="http://www.bing.com"]Click me![QUOTE]........[/QUOTE]Ok Bai![/URL]';
preg_match_all('#\[QUOTE\]#', $text, $matches, PREG_OFFSET_CAPTURE, PREG_PATTERN_ORDER);
print_r($matches);
その結果は次のとおりです。
配列([0] =>配列([0] =>配列([0] => [QUOTE] [1] => 19)[1] =>配列([0] => [QUOTE] [1] = > 100))))
ご覧のとおり、一致するものは2つだけです。文字列の先頭に文字を追加すると、3つすべてが見つかります。
$text = 'a[QUOTE]I wonder why[QUOTE]PHP[IMG]hates me[/IMG][/QUOTE][/QUOTE][URL="http://www.bing.com"]Click me![QUOTE]........[/QUOTE]Ok Bai![/URL]';
preg_match_all('#\[QUOTE\]#', $text, $matches, PREG_OFFSET_CAPTURE, PREG_PATTERN_ORDER);
print_r($matches);
その結果は次のとおりです。
配列([0] =>配列([0] =>配列([0] => [QUOTE] [1] => 1)[1] =>配列([0] => [QUOTE] [1] = > 20)[2] =>配列([0] => [QUOTE] [1] => 101)))
3つすべての試合。誰かが私の正規表現を変更する必要があるかどうか、または私が気付いていないいくつかの癖があるかどうかを理解するのを手伝ってくれるなら、それは大いにありがたいです。Pythonとreライブラリを利用してこれと同じことを試しましたが、すべての一致が返されます。また、このhttp://www.regextester.com/を利用しましたが、両方のシナリオで機能し、すべてが適切に一致していると報告されています。私の唯一の推測は、PREG_OFFSET_CAPTUREが位置0と0で一致を見つけて問題を引き起こしていることと関係があります。
よろしくお願いします!