PHP has a built-in php_strip_whitespace method for reading PHP files and removing blanks and comments in the code. However, it does not support directly reading the content to remove blanks and comments. The following method can support reading string content. , and the ThinkPHP framework has this method built in.
/**
* Remove whitespace and comments in the code
* @param string $content code content
* @return string
*/
Function strip_whitespace($content) {
$stripStr = '';
//Analyze php source code
$tokens = token_get_all($content);
$last_space = false;
for ($i = 0, $j = count($tokens); $i < $j; $i++) {
if (is_string($tokens[$i])) {
$last_space = false;
$stripStr .= $tokens[$i];
} else {
switch ($tokens[$i][0]) {
//Filter various PHP comments
case T_COMMENT:
case T_DOC_COMMENT:
break;
//Filter spaces
case T_WHITESPACE:
if (!$last_space) {
$stripStr .= ' ';
$last_space = true;
}
break;
case T_START_HEREDOC:
$stripStr .= "<<
break;
case T_END_HEREDOC:
$stripStr .= "THINK;n";
for($k = $i+1; $k < $j; $k++) {
if(is_string($tokens[$k]) && $tokens[$k] == ';') {
$i = $k;
break;
} else if($tokens[$k][0] == T_CLOSE_TAG) {
break;
}
}
break;
default:
$last_space = false;
$stripStr .= $tokens[$i][1];
}
}
}
return $stripStr;
}