如何在字符串中找到正则表达式匹配的索引?

Dan*_*ley 9 php regex

在php中,查找和捕获匹配给定正则表达式的所有子字符串相当简单,但是有一种简单的方法可以找到字符串中第一个正则表达式匹配的索引吗?

即我想要像这样运作的东西:

$str = "123456789abcdefgh";
$index = preg_index("#abcd#", $str);
// $index == 9
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 19

使用PREG_OFFSET_CAPTURE标志preg_match:

$str = "123456789abcdefgh";
$index = -1;
if(preg_match("#abcd#", $str, $matches, PREG_OFFSET_CAPTURE)) {
    $index = $matches[0][1];
}
Run Code Online (Sandbox Code Playgroud)

[0]上述对应于捕获组要其索引正则表达式(内部0为整个表达式,1对于第一捕获组,如果它存在,等等),而[1]是一个固定索引,如记录.

编辑:添加了一个if使代码更具可呈现性,现在不认为该模式肯定会匹配.

看到它在行动.