Um die Kommentare aus einer PHP-Datei zu entfernen werden die beiden PHP-Konstanten  T_COMMENT und T_DOC_COMMENT verwendet die Funktion token_get_all() um den Dateiinhalt aufzusplitten.
Dann wird verglichen ob der Inhalt ein Kommentar ist.
 

<?php
/***********************************************************************
* Php-Script umd Kommentare, Leezeichen und Leerzeilen zu entfernen
* Stand 17.11.2020
* Version 1.3
***********************************************************************/
define('NL',  "\n");
define('TB',  "\t");
define('WS',  ' ');

/***********************************************************************
*** Functions ***
***********************************************************************/

function removePhpComments($str){  

  $commentTokens = [
    \T_COMMENT,
    \T_DOC_COMMENT,
  ];
 
  $str = str_replace("\r", '', $str);
  $tokens = token_get_all($str);
  
  $s = '';
  foreach ($tokens as $token) {
    if (is_array($token)) {
      if (in_array($token[0], $commentTokens)) {
        if (substr($token[1], -1) == NL) $s .= NL; # keep \n from comment with \n at end of comment string
        continue;
      }
      $token = $token[1];
    }
    $s .= $token;
  }
  return $s;
}


function removeEmptyLines($str, $max = false) {

  # delete whitespace at end of line  
  do {
    $str = str_replace(WS . NL, NL, $str);
  } while (strpos($str, WS . NL) > 0);
  # delete tab at end of line
  do {
    $str = str_replace(TB . NL, NL, $str); 
  } while (strpos($str, TB . NL) > 0);
    
  if ($max === true) {      
    $find = NL . NL;
    $replace = NL;
  } else {
    $find = NL . NL . NL;
    $replace = NL . NL;
  }

  do {
    $str = str_replace($find, $replace, $str);
  } while (strpos($str, $find) > 0);
  return $str;
}


# Should be run at last
function removeSpaces ($str) {

  # delete double spaces
  do {
    $str = str_replace(WS . WS, WS, $str); 
  } while (strpos($str, WS . WS) > 0);
    
  # deletespaces at start of line
  do {
    $str = str_replace(NL . WS, NL, $str); 
  } while (strpos($str, NL . WS) > 0)

# delete tab at start of line do { $str = str_replace(NL . TB, NL, $str); } while (strpos($str, NL . TB) > 0); return $str; } function cleanfile($file) { if (substr($file, -4) == '.php') { $str = file_get_contents($file); $str = removePhpComments($str); $str = removeEmptyLines($str); #$str = removeSpaces($str); if ($GLOBALS['keep_org'] === true) { $file = str_replace('.php', '.comment_free.php', $file); } file_put_contents($file, $str); } } /*********************************************************************** *** Einstellungen *** ***********************************************************************/ # File or Folder to cleanup $file_folder_org = 'org.php'; # keep original fole (stongly recommended set to true) $keep_org = true; /*********************************************************************** *** Programm *** ***********************************************************************/ if (file_exists($file_folder_org)) { if (is_dir($file_folder_org)) { $files = scandir($file_folder_org); foreach ($files as $key => $value) { cleanfile($value); } } else { cleanfile($file_folder_org); } } ?>

 

 

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.