function recurse_replace($str) { if (preg_match('/bbbb(.*)dddd/', $str)) { return preg_replace('/bbbb(.*)dddd/eS', "recurse_replace('\\1') . 'bbbbdddd'", $str); } else { return $str; } }