$string = '<p class=a>one<p class=a>.<p class=a>two<p class=a>.<p class=a>three<p class=a>';
$substring = '<p class=a>';
preg_match_all('~('.preg_quote($substring,'~').')(.*?)\1~',$string,$matches);
var_dump($matches[2]);
/*
array(3) {
[0]=>
string(3) "one"
[1]=>
string(3) "two"
[2]=>
string(5) "three"
}
*/