regex - PHP preg_match returning the wrong indexes -


i'm trying extract indexes of specific word string using php's preg_match. take example word hello:

$r = "/\b(hello)\b/u"; 

let's want in string:

$s = 'hello. how you, hello there. helloorona!'; 

if run preg_match preg_offset_capture parameter , passing in array called $matches,

preg_match($r, $s, $matches, preg_offset_capture); 

i expect returned (i.e. ignoring last "hellooroona" phrase):

["hello", 0], ["hello", 20] 

but in fact, when return echo value of $matches either through json_encode or looping on matches, value returned always:

["hello", 0], ["hello", 0] 

if run on similar string, let's

$s = 'how you, hello there.'; 

the answer

["hello", 13] 

which correct. run on hello hello hello , 3 indexes, 0.

summary

so seems index counter returning first index. expected behavior? how actual indexes?

the second ["hello", 0] not second hello in string, match of sub group.

use preg_match_all give expected result:

// note: sub group not necessary $r = "/\bhello\b/u"; $s = 'hello. how you, hello there. helloorona!'; preg_match_all($r, $s, $matches, preg_offset_capture); 

Comments

Popular posts from this blog

java - activate/deactivate sonar maven plugin by profile? -

python - TypeError: can only concatenate tuple (not "float") to tuple -

java - What is the difference between String. and String.this. ? -