diff --git a/Writer/Parser.php b/Writer/Parser.php index ff04b5f..8163158 100644 --- a/Writer/Parser.php +++ b/Writer/Parser.php @@ -538,7 +538,12 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR return($this->_convertRef2d($token)); } // match external references like Sheet1!A1 - elseif(preg_match("/^([A-Za-z0-9_]+\![A-I]?[A-Z])(\d+)$/",$token)) + elseif (preg_match("/^([A-Za-z0-9_]+\![A-I]?[A-Z])(\d+)$/",$token)) + { + return($this->_convertRef3d($token)); + } + // match external references like Sheet1:Sheet2!A1 + elseif (preg_match("/^([A-Za-z0-9_]+\:[A-Za-z0-9_]+\![A-I]?[A-Z])(\d+)$/",$token)) { return($this->_convertRef3d($token)); } @@ -553,7 +558,12 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR return($this->_convertRange2d($token)); } // match external ranges like Sheet1!A1:B2 - elseif(preg_match("/^([A-Za-z0-9_]+\![A-I]?[A-Z])(\d+)\:([A-I]?[A-Z])(\d+)$/",$token)) + elseif (preg_match("/^([A-Za-z0-9_]+\![A-I]?[A-Z])(\d+)\:([A-I]?[A-Z])(\d+)$/",$token)) + { + return($this->_convertRange3d($token)); + } + // match external ranges like Sheet1:Sheet2!A1:B2 + elseif (preg_match("/^([A-Za-z0-9_]+\:[A-Za-z0-9_]+\![A-I]?[A-Z])(\d+)\:([A-I]?[A-Z])(\d+)$/",$token)) { return($this->_convertRange3d($token)); } @@ -1062,8 +1072,8 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR { return $token; } - // If it's an external reference (Sheet1!A1) - elseif(eregi("^[A-Za-z0-9_]+\![A-I]?[A-Z][0-9]+$",$token) and + // If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1) + elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\![A-I]?[A-Z][0-9]+$/",$token) and !ereg("[0-9]",$this->_lookahead) and ($this->_lookahead != ':') and ($this->_lookahead != '.')) { @@ -1081,11 +1091,11 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR { return $token; } - // If it's a external range - elseif(eregi("^[A-Za-z0-9_]+\![A-I]?[A-Z][0-9]+:[A-I]?[A-Z][0-9]+$",$token) and + // If it's an external range + elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\![A-I]?[A-Z][0-9]+:[A-I]?[A-Z][0-9]+$/",$token) and !ereg("[0-9]",$this->_lookahead)) { - return($token); + return $token; } // If it's a number (check that it's not a sheet name) elseif (is_numeric($token) and !is_numeric($token.$this->_lookahead) and @@ -1321,8 +1331,8 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR $this->_advance(); return $result; } - // If it's an external reference (Sheet1!A1) - elseif(eregi("^[A-Za-z0-9_]+\![A-I]?[A-Z][0-9]+$",$this->_current_token)) + // If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1) + elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\![A-I]?[A-Z][0-9]+$/",$this->_current_token)) { $result = $this->_createTree($this->_current_token, '', ''); $this->_advance(); @@ -1337,7 +1347,7 @@ class Spreadsheet_Excel_Writer_Parser extends PEAR return $result; } // If it's an external range (Sheet1!A1:B2) - elseif(eregi("^[A-Za-z0-9_]+\![A-I]?[A-Z][0-9]+:[A-I]?[A-Z][0-9]+$",$this->_current_token)) + elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\![A-I]?[A-Z][0-9]+:[A-I]?[A-Z][0-9]+$/",$this->_current_token)) { $result = $this->_current_token; $this->_advance();