Just to demonstrate a non regexp alternative
$string = "It behooves us all to offer the prospectus for our inclusive syllabus";
$filterword = 'us';
$filtered = array_filter(
str_word_count($string,2),
function($word) use($filterword) {
return $word == $filterword;
}
);
var_dump($filtered);
where the keys of $filtered are the offset position
If you want case-insensitive, replace
return $word == $filterword;
with
return strtolower($word) == strtolower($filterword);
manpreet
Best Answer
2 years ago
This is slightly different to finding all the positions of a substring inside a string because I want it to work with words which may be followed by a space, comma, semi-colon, colon, fullstop, exclamation mark and other punctuation.
I have the following function to find all the positions of a substring:
Problem is, if I try to find all positions of the substring "us", it will return positions of the occurrence in "prospectus" or "inclusive" etc..
Is there any way to prevent this? Possibly using regular expressions?
Thanks. Stefan