我试图用preg_match_all
找到所有出现的偏移量e.g。
$haystack = 'aaaab';
$needle = 'aa';
preg_match_all('/' . $needle . '/', $haystack, $matches);
$ matches is
Array
(
[0] => Array
(
[0] => Array
(
[0] => aa
[1] => 0
)
[1] => Array
(
[0] => aa
[1] => 2
)
)
)
它从大海捞针返回第一组和第二组aa(“aa”“aa”“b”)的偏移量,而我期望它从索引1开始返回“aa”。
Array
(
[0] => Array
(
[0] => Array
(
[0] => aa
[1] => 0
)
[1] => Array
(
[0] => aa
[1] => 1
)
[2] => Array
(
[0] => aa
[1] => 2
)
)
)
有没有办法可以修复正则表达式或使用其他函数(接受正则表达式)来完成这项工作?
PS:我知道strpos可以做到这一点,但是我还有更多东西要搜索,因此会使用preg_match_all。
答案 0 :(得分:4)
您需要更改针的表达式才能使用断言。这样可以防止第二个a
被正则表达式引擎吃掉:
$needle = 'a(?=a)';