$name = preg_replace(array('%^widget-%', '%-%', '%\.php$%'), array('','_',''), $file);
.
(, -, .):
$name = preg_replacearray('%^.*?-%', '%-%', '%\.(?!.*?\.).*?$%'), array('','_',''), $file);
, .
Update:
- _, substr() :
$name = substr($file, 7, -4);