$x = <<<'foo' (class|trait)[\s]+([\S]+)[\s]*[\s]+{)(?P[\s\S]+)?(?P[\s]+})#i', function($r) { $r['body'] = preg_replace_callback('#(?Puse[\s]+([\S]+)[\s]*[\s]+{)(?P[\s\S]+)?(?P[\s]+})#i', function($r) { $r['body'] = preg_replace_callback('#(?P([\s]+[\S]+)[\s]+as(?:[\s]+(public|protected|private))?)(?P[\s]+([\S]+));#i', function($r) { return $r['method'].' function '.$r['alias'].'(){}'; }, $r['body']); return $r['open'].$r['body'].$r['close']; }, $r['body']); return $r['open'].$r['body'].$r['close']; }, $x); print $x; /*