/** * * CSVに1行書き加える * * @access public * @param array $record 書き加える行データ(配列) * @param string $nlChar 改行文字 * @param bool $speedUp 高速化のためにエラーチェックをスキップする場合にTRUE * @return bool 成功した場合にTRUE 、失敗した場合にFALSE * */ public function addRow($record, $nlChar = NULL, $speedUp = FALSE) { if (!$speedUp) { // 例外処理 $check = array(array($record, AOKI_VARTYPE_ARRAY)); $this->chkArgs(__CLASS__, __METHOD__, $check); if (empty($this->_fileHandle) || !is_resource($this->_fileHandle)) { // ファイル未OPEN throw exception(__CLASS__, __METHOD__, AOKI_OTHER, "File not opend"); } elseif (fseek($this->_fileHandle, 0, SEEK_END)) { // ファイルポインタ移動失敗 throw exception(__CLASS__, __METHOD__, AOKI_OTHER, "Failed to move pointer"); } } else { fseek($this->_fileHandle, 0, SEEK_END); } // 改行コードの決定 $nlChar = is_null($nlChar) ? $this->nlChar : $nlChar; // レコードの作成 foreach ($record as $k => $v) { if (preg_match('/[",\\r\\n]/', $v)) { // レコード内改行コードをLFで統一 $v = preg_replace("/\r\n|\r/", "\n", $v); // " でくくる $v = sprintf('"%s"', str_replace('"', '""', $v)); // 書き換え $record[$k] = $v; } } $line = implode($this->delimiter, $record) . $nlChar; if ($this->charset) { $line = string_multibyte::convertEncoding($line, $this->charset); } if (($len = strlen($line)) > $this->_maxLength) { $this->_maxLength = $len; } return (bool) fwrite($this->_fileHandle, $line); }
/** * * 入力値定義 -size- チェック * * @access public * @param mixed $value 検査対象のリクエスト値 * @param array $params 属性値配列:array("min" => 下限値, "max" => 上限値) * @return bool $valueが定義に沿っていればTRUE * */ public static function checkSize($value, $params = NULL) { if (empty($params["charset"])) { $len = strlen($value); } else { $tmp = string_multibyte::convertEncoding($value, $params["charset"], JAZZ_INNER_ENCODING); $len = strlen($tmp); } return !strlen($value) ? TRUE : self::_checkRange($len, $params); }