我想從PHP的preg_match
提取一個字符串中的特定單詞的所有索引。舉個例子的話hello
:PHP preg_match返回錯誤的索引
$r = "/\b(hello)\b/u";
比方說,我想看看它在這個字符串:
$s = 'hello. how are you, hello there. helloorona!';
如果我運行preg_match
與PREG_OFFSET_CAPTURE
參數傳遞一個數組名爲$比賽,
preg_match($r, $s, $matches, PREG_OFFSET_CAPTURE);
我期望返回這樣的事情(即忽略了最後一個「hellooroona」語):
["hello", 0], ["hello", 20]
但事實上,當我返回或者通過json_encode
或者通過遍歷所有的比賽呼應$matches
值,返回的值始終是:
["hello", 0], ["hello", 0]
如果我在一個類似的字符串運行此,讓我們說
$s = 'how are you, hello there.';
答案是
["hello", 13]
這是正確的。運行它hello hello hello
,我得到三個指標,均爲0
摘要
所以它看起來像指數計數器被簡單地總是返回的第一個索引。這是預期的行爲?我如何獲得實際的索引?
最後的招呼沒有展示,因爲你正在使用'\ B'這是字邊界例如,任何事情之前/之後是不發一言它會捕獲它的字符。 – Class