a* means zero or more of a.
In the string ‘abbabba’ we have two occurrence of abba. (abba)bba and abb(abba).
preg_match_all matches only first occurrence.
Am i missing any basic of regex fundamental?
$string = 'abbabba';
preg_match_all("/ab*a/", $string, $matches);
print_r($matches);
Array ( [0] => Array ( [0] => abba ) )
Source