3v4l.org

run code in 300+ PHP versions simultaneously
<?php $text = "Héllo Bob's and Russ’ new-found folks — goodbye"; var_export( array_reduce( preg_match_all("~([^\p{L}`'-]*)([\p{L}`'-]+)~u", $text, $m, PREG_SET_ORDER) ? $m : [], function($result, $m) { static $last = 0; $last += mb_strlen($m[1]); $result[] = [$m[2] => $last]; $last += mb_strlen($m[2]); return $result; }, [] ) );

preferences:
87.55 ms | 407 KiB | 5 Q