⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parser.php

📁 很棒的在线教学系统
💻 PHP
📖 第 1 页 / 共 5 页
字号:
              'REPT'            => array(  30,    2,    1,    0 ),              'MID'             => array(  31,    3,    1,    0 ),              'LEN'             => array(  32,    1,    1,    0 ),              'VALUE'           => array(  33,    1,    1,    0 ),              'TRUE'            => array(  34,    0,    1,    0 ),              'FALSE'           => array(  35,    0,    1,    0 ),              'AND'             => array(  36,   -1,    0,    0 ),              'OR'              => array(  37,   -1,    0,    0 ),              'NOT'             => array(  38,    1,    1,    0 ),              'MOD'             => array(  39,    2,    1,    0 ),              'DCOUNT'          => array(  40,    3,    0,    0 ),              'DSUM'            => array(  41,    3,    0,    0 ),              'DAVERAGE'        => array(  42,    3,    0,    0 ),              'DMIN'            => array(  43,    3,    0,    0 ),              'DMAX'            => array(  44,    3,    0,    0 ),              'DSTDEV'          => array(  45,    3,    0,    0 ),              'VAR'             => array(  46,   -1,    0,    0 ),              'DVAR'            => array(  47,    3,    0,    0 ),              'TEXT'            => array(  48,    2,    1,    0 ),              'LINEST'          => array(  49,   -1,    0,    0 ),              'TREND'           => array(  50,   -1,    0,    0 ),              'LOGEST'          => array(  51,   -1,    0,    0 ),              'GROWTH'          => array(  52,   -1,    0,    0 ),              'PV'              => array(  56,   -1,    1,    0 ),              'FV'              => array(  57,   -1,    1,    0 ),              'NPER'            => array(  58,   -1,    1,    0 ),              'PMT'             => array(  59,   -1,    1,    0 ),              'RATE'            => array(  60,   -1,    1,    0 ),              'MIRR'            => array(  61,    3,    0,    0 ),              'IRR'             => array(  62,   -1,    0,    0 ),              'RAND'            => array(  63,    0,    1,    1 ),              'MATCH'           => array(  64,   -1,    0,    0 ),              'DATE'            => array(  65,    3,    1,    0 ),              'TIME'            => array(  66,    3,    1,    0 ),              'DAY'             => array(  67,    1,    1,    0 ),              'MONTH'           => array(  68,    1,    1,    0 ),              'YEAR'            => array(  69,    1,    1,    0 ),              'WEEKDAY'         => array(  70,   -1,    1,    0 ),              'HOUR'            => array(  71,    1,    1,    0 ),              'MINUTE'          => array(  72,    1,    1,    0 ),              'SECOND'          => array(  73,    1,    1,    0 ),              'NOW'             => array(  74,    0,    1,    1 ),              'AREAS'           => array(  75,    1,    0,    1 ),              'ROWS'            => array(  76,    1,    0,    1 ),              'COLUMNS'         => array(  77,    1,    0,    1 ),              'OFFSET'          => array(  78,   -1,    0,    1 ),              'SEARCH'          => array(  82,   -1,    1,    0 ),              'TRANSPOSE'       => array(  83,    1,    1,    0 ),              'TYPE'            => array(  86,    1,    1,    0 ),              'ATAN2'           => array(  97,    2,    1,    0 ),              'ASIN'            => array(  98,    1,    1,    0 ),              'ACOS'            => array(  99,    1,    1,    0 ),              'CHOOSE'          => array( 100,   -1,    1,    0 ),              'HLOOKUP'         => array( 101,   -1,    0,    0 ),              'VLOOKUP'         => array( 102,   -1,    0,    0 ),              'ISREF'           => array( 105,    1,    0,    0 ),              'LOG'             => array( 109,   -1,    1,    0 ),              'CHAR'            => array( 111,    1,    1,    0 ),              'LOWER'           => array( 112,    1,    1,    0 ),              'UPPER'           => array( 113,    1,    1,    0 ),              'PROPER'          => array( 114,    1,    1,    0 ),              'LEFT'            => array( 115,   -1,    1,    0 ),              'RIGHT'           => array( 116,   -1,    1,    0 ),              'EXACT'           => array( 117,    2,    1,    0 ),              'TRIM'            => array( 118,    1,    1,    0 ),              'REPLACE'         => array( 119,    4,    1,    0 ),              'SUBSTITUTE'      => array( 120,   -1,    1,    0 ),              'CODE'            => array( 121,    1,    1,    0 ),              'FIND'            => array( 124,   -1,    1,    0 ),              'CELL'            => array( 125,   -1,    0,    1 ),              'ISERR'           => array( 126,    1,    1,    0 ),              'ISTEXT'          => array( 127,    1,    1,    0 ),              'ISNUMBER'        => array( 128,    1,    1,    0 ),              'ISBLANK'         => array( 129,    1,    1,    0 ),              'T'               => array( 130,    1,    0,    0 ),              'N'               => array( 131,    1,    0,    0 ),              'DATEVALUE'       => array( 140,    1,    1,    0 ),              'TIMEVALUE'       => array( 141,    1,    1,    0 ),              'SLN'             => array( 142,    3,    1,    0 ),              'SYD'             => array( 143,    4,    1,    0 ),              'DDB'             => array( 144,   -1,    1,    0 ),              'INDIRECT'        => array( 148,   -1,    1,    1 ),              'CALL'            => array( 150,   -1,    1,    0 ),              'CLEAN'           => array( 162,    1,    1,    0 ),              'MDETERM'         => array( 163,    1,    2,    0 ),              'MINVERSE'        => array( 164,    1,    2,    0 ),              'MMULT'           => array( 165,    2,    2,    0 ),              'IPMT'            => array( 167,   -1,    1,    0 ),              'PPMT'            => array( 168,   -1,    1,    0 ),              'COUNTA'          => array( 169,   -1,    0,    0 ),              'PRODUCT'         => array( 183,   -1,    0,    0 ),              'FACT'            => array( 184,    1,    1,    0 ),              'DPRODUCT'        => array( 189,    3,    0,    0 ),              'ISNONTEXT'       => array( 190,    1,    1,    0 ),              'STDEVP'          => array( 193,   -1,    0,    0 ),              'VARP'            => array( 194,   -1,    0,    0 ),              'DSTDEVP'         => array( 195,    3,    0,    0 ),              'DVARP'           => array( 196,    3,    0,    0 ),              'TRUNC'           => array( 197,   -1,    1,    0 ),              'ISLOGICAL'       => array( 198,    1,    1,    0 ),              'DCOUNTA'         => array( 199,    3,    0,    0 ),              'ROUNDUP'         => array( 212,    2,    1,    0 ),              'ROUNDDOWN'       => array( 213,    2,    1,    0 ),              'RANK'            => array( 216,   -1,    0,    0 ),              'ADDRESS'         => array( 219,   -1,    1,    0 ),              'DAYS360'         => array( 220,   -1,    1,    0 ),              'TODAY'           => array( 221,    0,    1,    1 ),              'VDB'             => array( 222,   -1,    1,    0 ),              'MEDIAN'          => array( 227,   -1,    0,    0 ),              'SUMPRODUCT'      => array( 228,   -1,    2,    0 ),              'SINH'            => array( 229,    1,    1,    0 ),              'COSH'            => array( 230,    1,    1,    0 ),              'TANH'            => array( 231,    1,    1,    0 ),              'ASINH'           => array( 232,    1,    1,    0 ),              'ACOSH'           => array( 233,    1,    1,    0 ),              'ATANH'           => array( 234,    1,    1,    0 ),              'DGET'            => array( 235,    3,    0,    0 ),              'INFO'            => array( 244,    1,    1,    1 ),              'DB'              => array( 247,   -1,    1,    0 ),              'FREQUENCY'       => array( 252,    2,    0,    0 ),              'ERROR.TYPE'      => array( 261,    1,    1,    0 ),              'REGISTER.ID'     => array( 267,   -1,    1,    0 ),              'AVEDEV'          => array( 269,   -1,    0,    0 ),              'BETADIST'        => array( 270,   -1,    1,    0 ),              'GAMMALN'         => array( 271,    1,    1,    0 ),              'BETAINV'         => array( 272,   -1,    1,    0 ),              'BINOMDIST'       => array( 273,    4,    1,    0 ),              'CHIDIST'         => array( 274,    2,    1,    0 ),              'CHIINV'          => array( 275,    2,    1,    0 ),              'COMBIN'          => array( 276,    2,    1,    0 ),              'CONFIDENCE'      => array( 277,    3,    1,    0 ),              'CRITBINOM'       => array( 278,    3,    1,    0 ),              'EVEN'            => array( 279,    1,    1,    0 ),              'EXPONDIST'       => array( 280,    3,    1,    0 ),              'FDIST'           => array( 281,    3,    1,    0 ),              'FINV'            => array( 282,    3,    1,    0 ),              'FISHER'          => array( 283,    1,    1,    0 ),              'FISHERINV'       => array( 284,    1,    1,    0 ),              'FLOOR'           => array( 285,    2,    1,    0 ),              'GAMMADIST'       => array( 286,    4,    1,    0 ),              'GAMMAINV'        => array( 287,    3,    1,    0 ),              'CEILING'         => array( 288,    2,    1,    0 ),              'HYPGEOMDIST'     => array( 289,    4,    1,    0 ),              'LOGNORMDIST'     => array( 290,    3,    1,    0 ),              'LOGINV'          => array( 291,    3,    1,    0 ),              'NEGBINOMDIST'    => array( 292,    3,    1,    0 ),              'NORMDIST'        => array( 293,    4,    1,    0 ),              'NORMSDIST'       => array( 294,    1,    1,    0 ),              'NORMINV'         => array( 295,    3,    1,    0 ),              'NORMSINV'        => array( 296,    1,    1,    0 ),              'STANDARDIZE'     => array( 297,    3,    1,    0 ),              'ODD'             => array( 298,    1,    1,    0 ),              'PERMUT'          => array( 299,    2,    1,    0 ),              'POISSON'         => array( 300,    3,    1,    0 ),              'TDIST'           => array( 301,    3,    1,    0 ),              'WEIBULL'         => array( 302,    4,    1,    0 ),              'SUMXMY2'         => array( 303,    2,    2,    0 ),              'SUMX2MY2'        => array( 304,    2,    2,    0 ),              'SUMX2PY2'        => array( 305,    2,    2,    0 ),              'CHITEST'         => array( 306,    2,    2,    0 ),              'CORREL'          => array( 307,    2,    2,    0 ),              'COVAR'           => array( 308,    2,    2,    0 ),              'FORECAST'        => array( 309,    3,    2,    0 ),              'FTEST'           => array( 310,    2,    2,    0 ),              'INTERCEPT'       => array( 311,    2,    2,    0 ),              'PEARSON'         => array( 312,    2,    2,    0 ),              'RSQ'             => array( 313,    2,    2,    0 ),              'STEYX'           => array( 314,    2,    2,    0 ),              'SLOPE'           => array( 315,    2,    2,    0 ),              'TTEST'           => array( 316,    4,    2,    0 ),              'PROB'            => array( 317,   -1,    2,    0 ),              'DEVSQ'           => array( 318,   -1,    0,    0 ),              'GEOMEAN'         => array( 319,   -1,    0,    0 ),              'HARMEAN'         => array( 320,   -1,    0,    0 ),              'SUMSQ'           => array( 321,   -1,    0,    0 ),              'KURT'            => array( 322,   -1,    0,    0 ),              'SKEW'            => array( 323,   -1,    0,    0 ),              'ZTEST'           => array( 324,   -1,    0,    0 ),              'LARGE'           => array( 325,    2,    0,    0 ),              'SMALL'           => array( 326,    2,    0,    0 ),              'QUARTILE'        => array( 327,    2,    0,    0 ),              'PERCENTILE'      => array( 328,    2,    0,    0 ),              'PERCENTRANK'     => array( 329,   -1,    0,    0 ),              'MODE'            => array( 330,   -1,    2,    0 ),              'TRIMMEAN'        => array( 331,    2,    0,    0 ),              'TINV'            => array( 332,    2,    1,    0 ),              'CONCATENATE'     => array( 336,   -1,    1,    0 ),              'POWER'           => array( 337,    2,    1,    0 ),              'RADIANS'         => array( 342,    1,    1,    0 ),              'DEGREES'         => array( 343,    1,    1,    0 ),              'SUBTOTAL'        => array( 344,   -1,    0,    0 ),              'SUMIF'           => array( 345,   -1,    0,    0 ),              'COUNTIF'         => array( 346,    2,    0,    0 ),              'COUNTBLANK'      => array( 347,    1,    0,    0 ),              'ROMAN'           => array( 354,   -1,    1,    0 )              );    }    /**    * Convert a token to the proper ptg value.    *    * @access private    * @param mixed $token The token to convert.    * @return mixed the converted token on success. PEAR_Error if the token    *               is not recognized    */    function _convert($token)    {        if (preg_match("/^\"[^\"]{0,255}\"$/", $token)) {            return $this->_convertString($token);        } elseif (is_numeric($token)) {            return $this->_convertNumber($token);        // match references like A1 or $A$1        } elseif (preg_match('/^\$?([A-Ia-i]?[A-Za-z])\$?(\d+)$/',$token)) {            return $this->_convertRef2d($token);        // match external references like Sheet1!A1 or Sheet1:Sheet2!A1        } elseif (preg_match("/^\w+(\:\w+)?\![A-Ia-i]?[A-Za-z](\d+)$/u",$token)) {            return $this->_convertRef3d($token);        // match external references like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1        } elseif (preg_match("/^'[\w -]+(\:[\w -]+)?'\![A-Ia-i]?[A-Za-z](\d+)$/u",$token)) {            return $this->_convertRef3d($token);        // match ranges like A1:B2        } elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\:(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/",$token)) {            return $this->_convertRange2d($token);        // match ranges like A1..B2        } elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/",$token)) {            return $this->_convertRange2d($token);        // match external ranges like Sheet1!A1 or Sheet1:Sheet2!A1:B2        } elseif (preg_match("/^\w+(\:\w+)?\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/u",$token)) {            return $this->_convertRange3d($token);        // match external ranges like 'Sheet1'!A1 or 'Sheet1:Sheet2'!A1:B2        } elseif (preg_match("/^'[\w -]+(\:[\w -]+)?'\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/u",$token)) {            return $this->_convertRange3d($token);        // operators (including parentheses)        } elseif (isset($this->ptg[$token])) {            return pack("C", $this->ptg[$token]);        // commented so argument number can be processed correctly. See toReversePolish().        /*elseif (preg_match("/[A-Z0-9\xc0-\xdc\.]+/",$token))        {            return($this->_convertFunction($token,$this->_func_args));        }*/        // if it's an argument, ignore the token (the argument remains)        } elseif ($token == 'arg') {            return '';        }        // TODO: use real error codes        return $this->raiseError("Unknown token $token");    }    /**    * Convert a number token to ptgInt or ptgNum    *    * @access private    * @param mixed $num an integer or double for conversion to its ptg value    */    function _convertNumber($num)    {        // Integer in the range 0..2**16-1        if ((preg_match("/^\d+$/", $num)) and ($num <= 65535)) {            return pack("Cv", $this->ptg['ptgInt'], $num);        } else { // A float            if ($this->_byte_order) { // if it's Big Endian                $num = strrev($num);            }            return pack("Cd", $this->ptg['ptgNum'], $num);        }    }    /**    * Convert a string token to ptgStr    *    * @access private    * @param string $string A string for conversion to its ptg value.    * @return mixed the converted token on success. PEAR_Error if the string    *               is longer than 255 characters.    */    function _convertString($string)    {        // chop away beggining and ending quotes        $string = substr($string, 1, strlen($string) - 2);        if (strlen($string) > 255) {            return $this->raiseError("String is too long");        }        if ($this->_BIFF_version == 0x0500) {            return pack("CC", $this->ptg['ptgStr'], strlen($string)).$string;        } elseif ($this->_BIFF_version == 0x0600) {            $encoding = 0;   // TODO: Unicode support            return pack("CCC", $this->ptg['ptgStr'], strlen($string), $encoding).$string;        }    }    /**    * Convert a function to a ptgFunc or ptgFuncVarV depending on the number of    * args that it takes.    *    * @access private    * @param string  $token    The name of the function for convertion to ptg value.    * @param integer $num_args The number of arguments the function receives.    * @return string The packed ptg for the function    */    function _convertFunction($token, $num_args)    {        $args     = $this->_functions[$token][1];        $volatile = $this->_functions[$token][3];        // Fixed number of args eg. TIME($i,$j,$k).        if ($args >= 0) {            return pack("Cv", $this->ptg['ptgFuncV'], $this->_functions[$token][0]);        }        // Variable number of args eg. SUM($i,$j,$k, ..).        if ($args == -1) {            return pack("CCv", $this->ptg['ptgFuncVarV'], $num_args, $this->_functions[$token][0]);        }    }    /**    * Convert an Excel range such as A1:D4 to a ptgRefV.    *    * @access private    * @param string $range An Excel range in the A1:A2 or A1..A2 format.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -