Tal vez pueda parecer raro querer quitar los comentarios de los "scripts" de PHP, puesto que, muchas veces, en realidad no sobrarán, sino que se echarán en falta. Pero, el caso es que, usando la función "token_get_all()" de PHP, podríamos hacer esto, entre otras cosas.

function SplitPhpComments($s){
  $r = '';
  $ts = token_get_all($s);
  foreach($ts as $t){
    if(!is_array($t)){
      $r .= $t;
    }else{
      switch($t[0]){
        case T_COMMENT:
        case T_ML_COMMENT:
        case T_DOC_COMMENT:
          break;
        default:
          $r .= $t[1];
          break;
      }
    }
  }
  return $r;
}

Un ejemplo de uso de la anterior función podría ser el siguiente:

$fp = fopen('test_ncom.php', 'w+');
if($fp){
  $s = file_get_contents('test.php');
  fwrite($fp, SplitPHPComments($s));
  fclose($fp);  
}else{
  echo'No se puso abrir el archivo de destino';
  exit;
}

Como puedes ver, se trata de "leer" el contenido de un supuesto "script" "test.php". A continuación guardamos el contenido de dicho "script" (ya sin los comentarios) en un nuevo archivo "test_ncom.php".

Hay que tener en cuenta que no he probado la función exhaustivamente, de forma que, en todo caso, no se te vaya a ocurrir utilizarla sobre archivos para los que no tengas las oportunas y necesarias copias de seguridad.

Actualización: PHP 5 no define las constantes "T_ML_COMMENT" y "T_DOC_COMMENT", por lo que hay que definirlas convenientemente si no lo estuvieran. A continuación código fuente que "anda por ahí" para esto mismo:

if(!defined('T_ML_COMMENT')){
  define('T_ML_COMMENT', T_COMMENT);
}else{
  if(!defined('T_DOC_COMMENT')){
    define('T_DOC_COMMENT', T_ML_COMMENT);
  }
}