示例#1
0
function pake_strip_php_comments($arg)
{
    /* T_ML_COMMENT does not exist in PHP 5.
     * The following three lines define it in order to
     * preserve backwards compatibility.
     *
     * The next two lines define the PHP 5-only T_DOC_COMMENT,
     * which we will mask as T_ML_COMMENT for PHP 4.
     */
    if (!defined('T_ML_COMMENT')) {
        define('T_ML_COMMENT', T_COMMENT);
    } else {
        if (!defined('T_DOC_COMMENT')) {
            define('T_DOC_COMMENT', T_ML_COMMENT);
        }
    }
    $files = pakeApp::get_files_from_argument($arg);
    foreach ($files as $file) {
        if (!is_file($file)) {
            continue;
        }
        $source = file_get_contents($file);
        $output = '';
        $tokens = token_get_all($source);
        foreach ($tokens as $token) {
            if (is_string($token)) {
                // simple 1-character token
                $output .= $token;
            } else {
                // token array
                list($id, $text) = $token;
                switch ($id) {
                    case T_COMMENT:
                    case T_ML_COMMENT:
                        // we've defined this
                    // we've defined this
                    case T_DOC_COMMENT:
                        // and this
                        // no action on comments
                        break;
                    default:
                        // anything else -> output "as is"
                        $output .= $text;
                        break;
                }
            }
        }
        file_put_contents($file, $output);
    }
}