Monday, 19 August 2013

PHP find positions of all occurrences of a particular word in a string

PHP find positions of all occurrences of a particular word in a string

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:
function strallpos($haystack,$needle,$offset = 0){
$result = array();
for($i = $offset; $i<strlen($haystack); $i++){
$pos = strpos($haystack,$needle,$i);
if($pos !== FALSE){
$offset = $pos;
if($offset >= $i){
$i = $offset;
$result[] = $offset;
}
}
}
return $result;
}
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

No comments:

Post a Comment