In php, it’s fairly simple to find and capture all substrings that match a given regex, but is there a simple way to find the index of the first regex match in a string?
i.e. I’d like something that operates like this:
$str = "123456789abcdefgh";
$index = preg_index("#abcd#", $str);
// $index == 9
Use the
PREG_OFFSET_CAPTUREflag withpreg_match:The
[0]above corresponds to the capture group inside the regex whose index you want (0for the whole expression,1for the first capturing group if it exists, etc) while the[1]is a fixed index, as documented.Edit: Added an
ifto make the code more presentable, it now doesn’t take for granted that the pattern will definitely match.See it in action.