찾다

require_once 'Excel/reader.php'; //加载所需类
$data = new Spreadsheet_Excel_Reader(); // 实例化
$data->setOutputEncoding('gbk'); //设置编码
$data->read('text.xls'); //read函数读取所需EXCEL表,支持中文

//numrows 是行 numcols是列
for ($i = 2; $i sheets[0]['numRows']; $i++) {
for ($j = 1; $j sheets[0]['numCols']; $j++) {
//echo "\"".$data->sheets[0]['cells'][$i][$j]."\",";
echo
}
echo "\n";

}

下面的保存为reader.php

---------------------------------------------------开始---------------------------------

/*** A class for reading Microsoft Excel Spreadsheets.** Originally developed by Vadim Tkachenko under the name PHPExcelReader.* (http://sourceforge.net/projects/phpexcelreader)* Based on the Java version by Andy Khan (http://www.andykhan.com).  Now* maintained by David Sanders.  Reads only Biff 7 and Biff 8 formats.** PHP versions 4 and 5** LICENSE: This source file is subject to version 3.0 of the PHP license* that is available through the world-wide-web at the following URI:* http://www.php.net/license/3_0.txt.  If you did not receive a copy of* the PHP License and are unable to obtain it through the web, please* send a note to license@php.net so we can mail you a copy immediately.** @category   Spreadsheet* @package    Spreadsheet_Excel_Reader* @author     Vadim Tkachenko * @license    http://www.php.net/license/3_0.txt  PHP License 3.0* @version    CVS: $Id: reader.php 19 2007-03-13 12:42:41Z shangxiao $* @link       http://pear.php.net/package/Spreadsheet_Excel_Reader* @see        OLE, Spreadsheet_Excel_Writer*/

//require_once 'PEAR.php';//require_once 'Spreadsheet/Excel/Reader/OLERead.php';require_once 'OLERead.inc';//require_once 'OLE.php';
define('SPREADSHEET_EXCEL_READER_BIFF8',             0x600);define('SPREADSHEET_EXCEL_READER_BIFF7',             0x500);define('SPREADSHEET_EXCEL_READER_WORKBOOKGLOBALS',   0x5);define('SPREADSHEET_EXCEL_READER_WORKSHEET',         0x10);
define('SPREADSHEET_EXCEL_READER_TYPE_BOF',          0x809);define('SPREADSHEET_EXCEL_READER_TYPE_EOF',          0x0a);define('SPREADSHEET_EXCEL_READER_TYPE_BOUNDSHEET',   0x85);define('SPREADSHEET_EXCEL_READER_TYPE_DIMENSION',    0x200);define('SPREADSHEET_EXCEL_READER_TYPE_ROW',          0x208);define('SPREADSHEET_EXCEL_READER_TYPE_DBCELL',       0xd7);define('SPREADSHEET_EXCEL_READER_TYPE_FILEPASS',     0x2f);define('SPREADSHEET_EXCEL_READER_TYPE_NOTE',         0x1c);define('SPREADSHEET_EXCEL_READER_TYPE_TXO',          0x1b6);define('SPREADSHEET_EXCEL_READER_TYPE_RK',           0x7e);define('SPREADSHEET_EXCEL_READER_TYPE_RK2',          0x27e);define('SPREADSHEET_EXCEL_READER_TYPE_MULRK',        0xbd);define('SPREADSHEET_EXCEL_READER_TYPE_MULBLANK',     0xbe);define('SPREADSHEET_EXCEL_READER_TYPE_INDEX',        0x20b);define('SPREADSHEET_EXCEL_READER_TYPE_SST',          0xfc);define('SPREADSHEET_EXCEL_READER_TYPE_EXTSST',       0xff);define('SPREADSHEET_EXCEL_READER_TYPE_CONTINUE',     0x3c);define('SPREADSHEET_EXCEL_READER_TYPE_LABEL',        0x204);define('SPREADSHEET_EXCEL_READER_TYPE_LABELSST',     0xfd);define('SPREADSHEET_EXCEL_READER_TYPE_NUMBER',       0x203);define('SPREADSHEET_EXCEL_READER_TYPE_NAME',         0x18);define('SPREADSHEET_EXCEL_READER_TYPE_ARRAY',        0x221);define('SPREADSHEET_EXCEL_READER_TYPE_STRING',       0x207);define('SPREADSHEET_EXCEL_READER_TYPE_FORMULA',      0x406);define('SPREADSHEET_EXCEL_READER_TYPE_FORMULA2',     0x6);define('SPREADSHEET_EXCEL_READER_TYPE_FORMAT',       0x41e);define('SPREADSHEET_EXCEL_READER_TYPE_XF',           0xe0);define('SPREADSHEET_EXCEL_READER_TYPE_BOOLERR',      0x205);define('SPREADSHEET_EXCEL_READER_TYPE_UNKNOWN',      0xffff);define('SPREADSHEET_EXCEL_READER_TYPE_NINETEENFOUR', 0x22);define('SPREADSHEET_EXCEL_READER_TYPE_MERGEDCELLS',  0xE5);
define('SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS' ,    25569);define('SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS1904', 24107);define('SPREADSHEET_EXCEL_READER_MSINADAY',          86400);//define('SPREADSHEET_EXCEL_READER_MSINADAY', 24 * 60 * 60);
//define('SPREADSHEET_EXCEL_READER_DEF_NUM_FORMAT', "%.2f");define('SPREADSHEET_EXCEL_READER_DEF_NUM_FORMAT',    "%s");

/** Place includes, constant defines and $_GLOBAL settings here.* Make sure they have appropriate docblocks to avoid phpDocumentor* construing they are documented by the page-level docblock.*/
/*** A class for reading Microsoft Excel Spreadsheets.** Originally developed by Vadim Tkachenko under the name PHPExcelReader.* (http://sourceforge.net/projects/phpexcelreader)* Based on the Java version by Andy Khan (http://www.andykhan.com).  Now* maintained by David Sanders.  Reads only Biff 7 and Biff 8 formats.** @category   Spreadsheet* @package    Spreadsheet_Excel_Reader* @author     Vadim Tkachenko * @copyright  1997-2005 The PHP Group* @license    http://www.php.net/license/3_0.txt  PHP License 3.0* @version    Release: @package_version@* @link       http://pear.php.net/package/PackageName* @see        OLE, Spreadsheet_Excel_Writer*/class Spreadsheet_Excel_Reader{    /**     * Array of worksheets found     *     * @var array     * @access public     */    var $boundsheets = array();
    /**     * Array of format records found     *      * @var array     * @access public     */    var $formatRecords = array();
    /**     * todo     *     * @var array     * @access public     */    var $sst = array();
    /**     * Array of worksheets     *     * The data is stored in 'cells' and the meta-data is stored in an array     * called 'cellsInfo'     *     * Example:     *     * $sheets  -->  'cells'  -->  row --> column --> Interpreted value     *          -->  'cellsInfo' --> row --> column --> 'type' - Can be 'date', 'number', or 'unknown'     *                                            --> 'raw' - The raw data that Excel stores for that data cell     *     * @var array     * @access public     */    var $sheets = array();
    /**     * The data returned by OLE     *     * @var string     * @access public     */    var $data;
    /**     * OLE object for reading the file     *     * @var OLE object     * @access private     */    var $_ole;
    /**     * Default encoding     *     * @var string     * @access private     */    var $_defaultEncoding;
    /**     * Default number format     *     * @var integer     * @access private     */    var $_defaultFormat = SPREADSHEET_EXCEL_READER_DEF_NUM_FORMAT;
    /**     * todo     * List of formats to use for each column     *     * @var array     * @access private     */    var $_columnsFormat = array();
    /**     * todo     *     * @var integer     * @access private     */    var $_rowoffset = 1;
    /**     * todo     *     * @var integer     * @access private     */    var $_coloffset = 1;
    /**     * List of default date formats used by Excel     *     * @var array     * @access public     */    var $dateFormats = array (        0xe => "d/m/Y",        0xf => "d-M-Y",        0x10 => "d-M",        0x11 => "M-Y",        0x12 => "h:i a",        0x13 => "h:i:s a",        0x14 => "H:i",        0x15 => "H:i:s",        0x16 => "d/m/Y H:i",        0x2d => "i:s",        0x2e => "H:i:s",        0x2f => "i:s.S");
    /**     * Default number formats used by Excel     *     * @var array     * @access public     */    var $numberFormats = array(        0x1 => "%1.0f",     // "0"        0x2 => "%1.2f",     // "0.00",        0x3 => "%1.0f",     //"#,##0",        0x4 => "%1.2f",     //"#,##0.00",        0x5 => "%1.0f",     /*"$#,##0;($#,##0)",*/        0x6 => '$%1.0f',    /*"$#,##0;($#,##0)",*/        0x7 => '$%1.2f',    //"$#,##0.00;($#,##0.00)",        0x8 => '$%1.2f',    //"$#,##0.00;($#,##0.00)",        0x9 => '%1.0f%%',   // "0%"        0xa => '%1.2f%%',   // "0.00%"        0xb => '%1.2f',     // 0.00E00",        0x25 => '%1.0f',    // "#,##0;(#,##0)",        0x26 => '%1.0f',    //"#,##0;(#,##0)",        0x27 => '%1.2f',    //"#,##0.00;(#,##0.00)",        0x28 => '%1.2f',    //"#,##0.00;(#,##0.00)",        0x29 => '%1.0f',    //"#,##0;(#,##0)",        0x2a => '$%1.0f',   //"$#,##0;($#,##0)",        0x2b => '%1.2f',    //"#,##0.00;(#,##0.00)",        0x2c => '$%1.2f',   //"$#,##0.00;($#,##0.00)",        0x30 => '%1.0f');   //"##0.0E0";
    // }}}    // {{{ Spreadsheet_Excel_Reader()
    /**     * Constructor     *     * Some basic initialisation     */     function Spreadsheet_Excel_Reader()    {        $this->_ole = new OLERead();        $this->setUTFEncoder('iconv');    }
    // }}}    // {{{ setOutputEncoding()
    /**     * Set the encoding method     *     * @param string Encoding to use     * @access public     */    function setOutputEncoding($encoding)    {        $this->_defaultEncoding = $encoding;    }
    // }}}    // {{{ setUTFEncoder()
    /**     *  $encoder = 'iconv' or 'mb'     *  set iconv if you would like use 'iconv' for encode UTF-16LE to your encoding     *  set mb if you would like use 'mb_convert_encoding' for encode UTF-16LE to your encoding     *     * @access public     * @param string Encoding type to use.  Either 'iconv' or 'mb'     */    function setUTFEncoder($encoder = 'iconv')    {        $this->_encoderFunction = '';
        if ($encoder == 'iconv') {            $this->_encoderFunction = function_exists('iconv') ? 'iconv' : '';        } elseif ($encoder == 'mb') {            $this->_encoderFunction = function_exists('mb_convert_encoding') ?                                      'mb_convert_encoding' :                                      '';        }    }
    // }}}    // {{{ setRowColOffset()
    /**     * todo     *     * @access public     * @param offset     */    function setRowColOffset($iOffset)    {        $this->_rowoffset = $iOffset;        $this->_coloffset = $iOffset;    }
    // }}}    // {{{ setDefaultFormat()
    /**     * Set the default number format     *     * @access public     * @param Default format     */    function setDefaultFormat($sFormat)    {        $this->_defaultFormat = $sFormat;    }
    // }}}    // {{{ setColumnFormat()
    /**     * Force a column to use a certain format     *     * @access public     * @param integer Column number     * @param string Format     */    function setColumnFormat($column, $sFormat)    {        $this->_columnsFormat[$column] = $sFormat;    }

    // }}}    // {{{ read()
    /**     * Read the spreadsheet file using OLE, then parse     *     * @access public     * @param filename     * @todo return a valid value     */    function read($sFileName)    {    /*        require_once 'OLE.php';        $ole = new OLE();        $ole->read($sFileName);
        foreach ($ole->_list as $i => $pps) {            if (($pps->Name == 'Workbook' || $pps->Name == 'Book') &&                $pps->Size >= SMALL_BLOCK_THRESHOLD) {
                $this->data = $ole->getData($i, 0, $ole->getDataLength($i));            } elseif ($pps->Name == 'Root Entry') {                $this->data = $ole->getData($i, 0, $ole->getDataLength($i));            }            //var_dump(strlen($ole->getData($i, 0, $ole->getDataLength($i))), $pps->Name, md5($this->data), $ole->getDataLength($i));        }//exit;        $this->_parse();
        return sizeof($this->sheets) > 0;    */
        $res = $this->_ole->read($sFileName);
        // oops, something goes wrong (Darko Miljanovic)        if($res === false) {            // check error code            if($this->_ole->error == 1) {            // bad file                die('The filename ' . $sFileName . ' is not readable');            }            // check other error codes here (eg bad fileformat, etc...)        }
        $this->data = $this->_ole->getWorkBook();

        /*        $res = $this->_ole->read($sFileName);
        if ($this->isError($res)) {//        var_dump($res);            return $this->raiseError($res);        }
        $total = $this->_ole->ppsTotal();        for ($i = 0; $i _ole->isFile($i)) {                $type = unpack("v", $this->_ole->getData($i, 0, 2));                if ($type[''] == 0x0809)  { // check if it's a BIFF stream                    $this->_index = $i;                    $this->data = $this->_ole->getData($i, 0, $this->_ole->getDataLength($i));                    break;                }            }        }
        if ($this->_index === null) {            return $this->raiseError("$file doesn't seem to be an Excel file");        }
        */
    //echo "data =".$this->data;        //$this->readRecords();        $this->_parse();    }

    // }}}    // {{{ _parse()
    /**     * Parse a workbook     *     * @access private     * @return bool     */    function _parse()    {        $pos = 0;
        $code = ord($this->data[$pos]) | ord($this->data[$pos+1])data[$pos+2]) | ord($this->data[$pos+3])        $version = ord($this->data[$pos + 4]) | ord($this->data[$pos + 5])data[$pos + 6]) | ord($this->data[$pos + 7])        if (($version != SPREADSHEET_EXCEL_READER_BIFF8) &&            ($version != SPREADSHEET_EXCEL_READER_BIFF7)) {            return false;        }
        if ($substreamType != SPREADSHEET_EXCEL_READER_WORKBOOKGLOBALS){            return false;        }
        //print_r($rec);        $pos += $length + 4;
        $code = ord($this->data[$pos]) | ord($this->data[$pos+1])data[$pos+2]) | ord($this->data[$pos+3])        while ($code != SPREADSHEET_EXCEL_READER_TYPE_EOF) {            switch ($code) {                case SPREADSHEET_EXCEL_READER_TYPE_SST:                    //echo "Type_SST\n";                     $spos = $pos + 4;                     $limitpos = $spos + $length;                     $uniqueStrings = $this->_GetInt4d($this->data, $spos+4);                                                $spos += 8;                                       for ($i = 0; $i data[$spos]) | ord($this->data[$spos+1])data[$spos+2]) | ord($this->data[$spos+3])data[$spos]) | (ord($this->data[$spos+1]) data[$spos]);                                                $spos++;                                        $asciiEncoding = (($optionFlags & 0x01) == 0) ;                                                $extendedString = ( ($optionFlags & 0x04) != 0);
                                                // See if string contains formatting information                                                $richString = ( ($optionFlags & 0x08) != 0);
                                                if ($richString) {                                        // Read in the crun                                                        $formattingRuns = ord($this->data[$spos]) | (ord($this->data[$spos+1])                                                 if ($extendedString) {                                                  // Read in cchExtRst                                                  $extendedRunLength = $this->_GetInt4d($this->data, $spos);                                                  $spos += 4;                                                }
                                                $len = ($asciiEncoding)? $numChars : $numChars*2;                                                if ($spos + $len data, $spos, $len);                                                                $spos += $len;                                                }else{                                                        // found countinue                                                        $retstr = substr($this->data, $spos, $limitpos - $spos);                                                        $bytesRead = $limitpos - $spos;                                                        $charsLeft = $numChars - (($asciiEncoding) ? $bytesRead : ($bytesRead / 2));                                                        $spos = $limitpos;
                                                         while ($charsLeft > 0){                                                                $opcode = ord($this->data[$spos]) | ord($this->data[$spos+1])data[$spos+2]) | ord($this->data[$spos+3])data[$spos]);                                                                $spos += 1;                                                                  if ($asciiEncoding && ($option == 0)) {                                                                                $len = min($charsLeft, $limitpos - $spos); // min($charsLeft, $conlength);                                                                    $retstr .= substr($this->data, $spos, $len);                                                                    $charsLeft -= $len;                                                                    $asciiEncoding = true;                                                                  }elseif (!$asciiEncoding && ($option != 0)){                                                                                $len = min($charsLeft * 2, $limitpos - $spos); // min($charsLeft, $conlength);                                                                    $retstr .= substr($this->data, $spos, $len);                                                                    $charsLeft -= $len/2;                                                                    $asciiEncoding = false;                                                                  }elseif (!$asciiEncoding && ($option == 0)) {                                                                // Bummer - the string starts off as Unicode, but after the                                                                // continuation it is in straightforward ASCII encoding                                                                                $len = min($charsLeft, $limitpos - $spos); // min($charsLeft, $conlength);                                                                        for ($j = 0; $j data[$spos + $j].chr(0);                                                                }                                                            $charsLeft -= $len;                                                                $asciiEncoding = false;                                                                  }else{                                                            $newstr = '';                                                                    for ($j = 0; $j data, $spos, $len);                                                                    $charsLeft -= $len/2;                                                                    $asciiEncoding = false;                                                                        //echo "Izavrat\n";                                                                  }                                                          $spos += $len;
                                                         }                                                }                                                $retstr = ($asciiEncoding) ? $retstr : $this->_encodeUTF16($retstr);//                                              echo "Str $i = $retstr\n";                                        if ($richString){                                                  $spos += 4 * $formattingRuns;                                                }
                                                // For extended strings, skip over the extended string data                                                if ($extendedString) {                                                  $spos += $extendedRunLength;                                                }                                                        //if ($retstr == 'Derby'){                                                        //      echo "bb\n";                                                        //}                                                $this->sst[]=$retstr;                                       }                    /*$continueRecords = array();                    while ($this->getNextCode() == Type_CONTINUE) {                        $continueRecords[] = &$this->nextRecord();                    }                    //echo " 1 Type_SST\n";                    $this->shareStrings = new SSTRecord($r, $continueRecords);                    //print_r($this->shareStrings->strings);                     */                     // echo 'SST read: '.($time_end-$time_start)."\n";                    break;
                case SPREADSHEET_EXCEL_READER_TYPE_FILEPASS:                    return false;                    break;                case SPREADSHEET_EXCEL_READER_TYPE_NAME:                    //echo "Type_NAME\n";                    break;                case SPREADSHEET_EXCEL_READER_TYPE_FORMAT:                        $indexCode = ord($this->data[$pos+4]) | ord($this->data[$pos+5])                         if ($version == SPREADSHEET_EXCEL_READER_BIFF8) {                            $numchars = ord($this->data[$pos+6]) | ord($this->data[$pos+7]) data[$pos+8]) == 0){                                $formatString = substr($this->data, $pos+9, $numchars);                            } else {                                $formatString = substr($this->data, $pos+9, $numchars*2);                            }                        } else {                            $numchars = ord($this->data[$pos+6]);                            $formatString = substr($this->data, $pos+7, $numchars*2);                        }
                    $this->formatRecords[$indexCode] = $formatString;                   // echo "Type.FORMAT\n";                    break;                case SPREADSHEET_EXCEL_READER_TYPE_XF:                        //global $dateFormats, $numberFormats;                        $indexCode = ord($this->data[$pos+6]) | ord($this->data[$pos+7]) formatRecords['xfrecords'])." $indexCode ";                        if (array_key_exists($indexCode, $this->dateFormats)) {                            //echo "isdate ".$dateFormats[$indexCode];                            $this->formatRecords['xfrecords'][] = array(                                    'type' => 'date',                                    'format' => $this->dateFormats[$indexCode]                                    );                        }elseif (array_key_exists($indexCode, $this->numberFormats)) {                        //echo "isnumber ".$this->numberFormats[$indexCode];                            $this->formatRecords['xfrecords'][] = array(                                    'type' => 'number',                                    'format' => $this->numberFormats[$indexCode]                                    );                        }else{                            $isdate = FALSE;                            if ($indexCode > 0){                                if (isset($this->formatRecords[$indexCode]))                                    $formatstr = $this->formatRecords[$indexCode];                                //echo '.other.';                                //echo "\ndate-time=$formatstr=\n";                                if ($formatstr)                                if (preg_match("/[^hmsday\/\-:\s]/i", $formatstr) == 0) { // found day and time format                                    $isdate = TRUE;                                    $formatstr = str_replace('mm', 'i', $formatstr);                                    $formatstr = str_replace('h', 'H', $formatstr);                                    //echo "\ndate-time $formatstr \n";                                }                            }
                            if ($isdate){                                $this->formatRecords['xfrecords'][] = array(                                        'type' => 'date',                                        'format' => $formatstr,                                        );                            }else{                                $this->formatRecords['xfrecords'][] = array(                                        'type' => 'other',                                        'format' => '',                                        'code' => $indexCode                                        );                            }                        }                        //echo "\n";                    break;                case SPREADSHEET_EXCEL_READER_TYPE_NINETEENFOUR:                    //echo "Type.NINETEENFOUR\n";                    $this->nineteenFour = (ord($this->data[$pos+4]) == 1);                    break;                case SPREADSHEET_EXCEL_READER_TYPE_BOUNDSHEET:                    //echo "Type.BOUNDSHEET\n";                        $rec_offset = $this->_GetInt4d($this->data, $pos+4);                        $rec_typeFlag = ord($this->data[$pos+8]);                        $rec_visibilityFlag = ord($this->data[$pos+9]);                        $rec_length = ord($this->data[$pos+10]);
                        if ($version == SPREADSHEET_EXCEL_READER_BIFF8){                            $chartype =  ord($this->data[$pos+11]);                            if ($chartype == 0){                                $rec_name    = substr($this->data, $pos+12, $rec_length);                            } else {                                $rec_name    = $this->_encodeUTF16(substr($this->data, $pos+12, $rec_length*2));                            }                        }elseif ($version == SPREADSHEET_EXCEL_READER_BIFF7){                                $rec_name    = substr($this->data, $pos+11, $rec_length);                        }                    $this->boundsheets[] = array('name'=>$rec_name,                                                 'offset'=>$rec_offset);
                    break;
            }
            //echo "Code = ".base_convert($r['code'],10,16)."\n";            $pos += $length + 4;            $code = ord($this->data[$pos]) | ord($this->data[$pos+1])data[$pos+2]) | ord($this->data[$pos+3])            //$r = &$this->nextRecord();            //echo "1 Code = ".base_convert($r['code'],10,16)."\n";        }
        foreach ($this->boundsheets as $key=>$val){            $this->sn = $key;            $this->_parsesheet($val['offset']);        }        return true;
    }
    /**     * Parse a worksheet     *     * @access private     * @param todo     * @todo fix return codes     */    function _parsesheet($spos)    {        $cont = true;        // read BOF        $code = ord($this->data[$spos]) | ord($this->data[$spos+1])data[$spos+2]) | ord($this->data[$spos+3])        $version = ord($this->data[$spos + 4]) | ord($this->data[$spos + 5])data[$spos + 6]) | ord($this->data[$spos + 7])        if (($version != SPREADSHEET_EXCEL_READER_BIFF8) && ($version != SPREADSHEET_EXCEL_READER_BIFF7)) {            return -1;        }
        if ($substreamType != SPREADSHEET_EXCEL_READER_WORKSHEET){            return -2;        }        //echo "Start parse code=".base_convert($code,10,16)." version=".base_convert($version,10,16)." substreamType=".base_convert($substreamType,10,16).""."\n";        $spos += $length + 4;        //var_dump($this->formatRecords);    //echo "code $code $length";        while($cont) {            //echo "mem= ".memory_get_usage()."\n";//            $r = &$this->file->nextRecord();            $lowcode = ord($this->data[$spos]);            if ($lowcode == SPREADSHEET_EXCEL_READER_TYPE_EOF) break;            $code = $lowcode | ord($this->data[$spos+1])data[$spos+2]) | ord($this->data[$spos+3])sheets[$this->sn]['maxrow'] = $this->_rowoffset - 1;            $this->sheets[$this->sn]['maxcol'] = $this->_coloffset - 1;            //echo "Code=".base_convert($code,10,16)." $code\n";            unset($this->rectype);            $this->multiplier = 1; // need for format with %            switch ($code) {                case SPREADSHEET_EXCEL_READER_TYPE_DIMENSION:                    //echo 'Type_DIMENSION ';                    if (!isset($this->numRows)) {                        if (($length == 10) ||  ($version == SPREADSHEET_EXCEL_READER_BIFF7)){                            $this->sheets[$this->sn]['numRows'] = ord($this->data[$spos+2]) | ord($this->data[$spos+3]) sheets[$this->sn]['numCols'] = ord($this->data[$spos+6]) | ord($this->data[$spos+7]) sheets[$this->sn]['numRows'] = ord($this->data[$spos+4]) | ord($this->data[$spos+5

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP : 서버 측 스크립팅 언어 소개PHP : 서버 측 스크립팅 언어 소개Apr 16, 2025 am 12:18 AM

PHP는 동적 웹 개발 및 서버 측 응용 프로그램에 사용되는 서버 측 스크립팅 언어입니다. 1.PHP는 편집이 필요하지 않으며 빠른 발전에 적합한 해석 된 언어입니다. 2. PHP 코드는 HTML에 포함되어 웹 페이지를 쉽게 개발할 수 있습니다. 3. PHP는 서버 측 로직을 처리하고 HTML 출력을 생성하며 사용자 상호 작용 및 데이터 처리를 지원합니다. 4. PHP는 데이터베이스와 상호 작용하고 프로세스 양식 제출 및 서버 측 작업을 실행할 수 있습니다.

PHP 및 웹 : 장기적인 영향 탐색PHP 및 웹 : 장기적인 영향 탐색Apr 16, 2025 am 12:17 AM

PHP는 지난 수십 년 동안 네트워크를 형성했으며 웹 개발에서 계속 중요한 역할을 할 것입니다. 1) PHP는 1994 년에 시작되었으며 MySQL과의 원활한 통합으로 인해 개발자에게 최초의 선택이되었습니다. 2) 핵심 기능에는 동적 컨텐츠 생성 및 데이터베이스와의 통합이 포함되며 웹 사이트를 실시간으로 업데이트하고 맞춤형 방식으로 표시 할 수 있습니다. 3) PHP의 광범위한 응용 및 생태계는 장기적인 영향을 미쳤지 만 버전 업데이트 및 보안 문제에 직면 해 있습니다. 4) PHP7의 출시와 같은 최근 몇 년간의 성능 향상을 통해 현대 언어와 경쟁 할 수 있습니다. 5) 앞으로 PHP는 컨테이너화 및 마이크로 서비스와 같은 새로운 도전을 다루어야하지만 유연성과 활발한 커뮤니티로 인해 적응력이 있습니다.

PHP를 사용하는 이유는 무엇입니까? 설명 된 장점과 혜택PHP를 사용하는 이유는 무엇입니까? 설명 된 장점과 혜택Apr 16, 2025 am 12:16 AM

PHP의 핵심 이점에는 학습 용이성, 강력한 웹 개발 지원, 풍부한 라이브러리 및 프레임 워크, 고성능 및 확장 성, 크로스 플랫폼 호환성 및 비용 효율성이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 웹 서버와 우수한 통합 및 여러 데이터베이스를 지원합니다. 3) Laravel과 같은 강력한 프레임 워크가 있습니다. 4) 최적화를 통해 고성능을 달성 할 수 있습니다. 5) 여러 운영 체제 지원; 6) 개발 비용을 줄이기위한 오픈 소스.

신화를 폭로 : PHP가 실제로 죽은 언어입니까?신화를 폭로 : PHP가 실제로 죽은 언어입니까?Apr 16, 2025 am 12:15 AM

PHP는 죽지 않았습니다. 1) PHP 커뮤니티는 성능 및 보안 문제를 적극적으로 해결하고 PHP7.x는 성능을 향상시킵니다. 2) PHP는 최신 웹 개발에 적합하며 대규모 웹 사이트에서 널리 사용됩니다. 3) PHP는 배우기 쉽고 서버가 잘 수행되지만 유형 시스템은 정적 언어만큼 엄격하지 않습니다. 4) PHP는 컨텐츠 관리 및 전자 상거래 분야에서 여전히 중요하며 생태계는 계속 발전하고 있습니다. 5) Opcache 및 APC를 통해 성능을 최적화하고 OOP 및 설계 패턴을 사용하여 코드 품질을 향상시킵니다.

PHP vs. Python 토론 : 어느 것이 더 낫습니까?PHP vs. Python 토론 : 어느 것이 더 낫습니까?Apr 16, 2025 am 12:03 AM

PHP와 Python에는 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구 사항에 따라 다릅니다. 1) PHP는 웹 개발, 배우기 쉽고 풍부한 커뮤니티 리소스에 적합하지만 구문은 현대적이지 않으며 성능과 보안에주의를 기울여야합니다. 2) Python은 간결한 구문과 배우기 쉬운 데이터 과학 및 기계 학습에 적합하지만 실행 속도 및 메모리 관리에는 병목 현상이 있습니다.

PHP의 목적 : 동적 웹 사이트 구축PHP의 목적 : 동적 웹 사이트 구축Apr 15, 2025 am 12:18 AM

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

PHP : 데이터베이스 및 서버 측 로직 처리PHP : 데이터베이스 및 서버 측 로직 처리Apr 15, 2025 am 12:15 AM

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo)PHP에서 SQL 주입을 어떻게 방지합니까? (준비된 진술, pdo)Apr 15, 2025 am 12:15 AM

PHP에서 전처리 문과 PDO를 사용하면 SQL 주입 공격을 효과적으로 방지 할 수 있습니다. 1) PDO를 사용하여 데이터베이스에 연결하고 오류 모드를 설정하십시오. 2) 준비 방법을 통해 전처리 명세서를 작성하고 자리 표시자를 사용하여 데이터를 전달하고 방법을 실행하십시오. 3) 쿼리 결과를 처리하고 코드의 보안 및 성능을 보장합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.