Php 如何在字符串中找到正则表达式匹配的索引?
在php中,查找和捕获与给定正则表达式匹配的所有子字符串非常简单,但是有没有一种简单的方法来查找字符串中第一个正则表达式匹配的索引 i、 e.我想要这样的东西:Php 如何在字符串中找到正则表达式匹配的索引?,php,regex,Php,Regex,在php中,查找和捕获与给定正则表达式匹配的所有子字符串非常简单,但是有没有一种简单的方法来查找字符串中第一个正则表达式匹配的索引 i、 e.我想要这样的东西: $str = "123456789abcdefgh"; $index = preg_index("#abcd#", $str); // $index == 9 将PREG\u OFFSET\u CAPTURE标志用于: 上面的[0]对应于正则表达式中的捕获组,您需要它的索引(0用于整个表达式,1用于第一个捕获组(如果它存在),等等),
$str = "123456789abcdefgh";
$index = preg_index("#abcd#", $str);
// $index == 9
将
PREG\u OFFSET\u CAPTURE
标志用于:
上面的[0]
对应于正则表达式中的捕获组,您需要它的索引(0
用于整个表达式,1
用于第一个捕获组(如果它存在),等等),而[1]
是一个固定索引,如文档所述
Edit:添加了一个if
以使代码更具表现力,现在不再想当然地认为模式一定会匹配
你试过了吗?
strpos()
只进行字符串匹配,不进行正则表达式匹配,虽然你可以在匹配中进行匹配,但这似乎很愚蠢。答案很好,正是我想要的。
$str = "123456789abcdefgh";
$index = -1;
if(preg_match("#abcd#", $str, $matches, PREG_OFFSET_CAPTURE)) {
$index = $matches[0][1];
}