我正在尝试使用 PHP 从字符串中提取特定单词的所有索引preg_match
。以这个词为例hello
:
$r = "/\b(hello)\b/u";
假设我想在这个字符串中查找它:
$s = 'hello. how are you, hello there. helloorona!';
如果我preg_match
使用PREG_OFFSET_CAPTURE
参数运行并传入一个名为 $matches 的数组,
preg_match($r, $s, $matches, PREG_OFFSET_CAPTURE);
我希望返回这样的东西(即忽略最后一个“hellooroona”短语):
["hello", 0], ["hello", 20]
但实际上,当我$matches
通过json_encode
或循环遍历所有匹配项返回 echo 的值时,返回的值始终是:
["hello", 0], ["hello", 0]
如果我在类似的字符串上运行它,让我们说
$s = 'how are you, hello there.';
答案是
["hello", 13]
哪个是对的。运行它hello hello hello
,我得到三个索引,全为 0。
概括
所以看起来索引计数器总是简单地返回第一个索引。这是预期的行为吗?如何获取实际索引?