Changeset 11730 for branches/comu/data/lib/glib.php
- Timestamp:
- 2007/03/11 06:27:25 (20 years ago)
- File:
-
- 1 edited
-
branches/comu/data/lib/glib.php (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/comu/data/lib/glib.php
r11729 r11730 7 7 8 8 /*---------------------------------------------------------------------- 9 * [ 名称] gfDownloadCsv10 * [ 概要] 引数データをCSVとして、クライアントにダウンロードさせる11 * [ 引数] 1:ヘッダ文字列 2:CSVデータ12 * [ 戻値] -13 * [ 依存] -14 * [ 注釈] 引数は1,2ともカンマ区切りになっていること9 * [̾¾Î] gfDownloadCsv 10 * [³µÍ×] °ú¿ô¥Ç¡¼¥¿¤òCSV¤È¤·¤Æ¡¢¥¯¥é¥¤¥¢¥ó¥È¤Ë¥À¥¦¥ó¥í¡¼¥É¤µ¤»¤ë 11 * [°ú¿ô] 1:¥Ø¥Ã¥Àʸ»úÎó 2:CSV¥Ç¡¼¥¿ 12 * [ÌáÃÍ] - 13 * [°Í¸] - 14 * [Ãí¼á] °ú¿ô¤Ï£±¡¤£²¤È¤â¥«¥ó¥Þ¶èÀÚ¤ê¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È 15 15 *----------------------------------------------------------------------*/ 16 16 function gfDownloadCsv($header, $contents){ … … 18 18 $fiest_name = date("YmdHis") .".csv"; 19 19 20 /* HTTP ヘッダの出力*/20 /* HTTP¥Ø¥Ã¥À¤Î½ÐÎÏ */ 21 21 Header("Content-disposition: attachment; filename=${fiest_name}"); 22 22 Header("Content-type: application/octet-stream; name=${fiest_name}"); 23 23 24 24 $return = $header.$contents; 25 if (mb_detect_encoding($return) == CHAR_CODE){ // 文字コード変換25 if (mb_detect_encoding($return) == CHAR_CODE){ //ʸ»ú¥³¡¼¥ÉÊÑ´¹ 26 26 $return = mb_convert_encoding($return,'SJIS',CHAR_CODE); 27 $return = str_replace( array( "\r\n", "\r" ), "\n", $return); // 改行方法の統一27 $return = str_replace( array( "\r\n", "\r" ), "\n", $return); // ²þ¹ÔÊýË¡¤ÎÅý°ì 28 28 } 29 29 echo $return; … … 31 31 32 32 /*---------------------------------------------------------------------- 33 * [ 名称] gfSetCsv34 * [ 概要] 引数の配列をCSV形式に変換する35 * [ 引数] 1:CSVにする配列 2:引数1が連想配列時の添え字を指定した配列36 * [ 戻値] CSVデータ37 * [ 依存] -38 * [ 注釈] -33 * [̾¾Î] gfSetCsv 34 * [³µÍ×] °ú¿ô¤ÎÇÛÎó¤òCSV·Á¼°¤ËÊÑ´¹¤¹¤ë 35 * [°ú¿ô] 1:CSV¤Ë¤¹¤ëÇÛÎó 2:°ú¿ô1¤¬Ï¢ÁÛÇÛÎó»þ¤Îꤍ»ú¤ò»ØÄꤷ¤¿ÇÛÎó 36 * [ÌáÃÍ] CSV¥Ç¡¼¥¿ 37 * [°Í¸] - 38 * [Ãí¼á] - 39 39 *----------------------------------------------------------------------*/ 40 40 function gfSetCsv( $array, $arrayIndex = "" ){ 41 // 引数$arrayIndexは、$arrayが連想配列のときに添え字を指定してやるために使用する41 //°ú¿ô$arrayIndex¤Ï¡¢$array¤¬Ï¢ÁÛÇÛÎó¤Î¤È¤¤Ëꤍ»ú¤ò»ØÄꤷ¤Æ¤ä¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë 42 42 43 43 $return = ""; … … 48 48 $return .= "\""; 49 49 if ( $arrayIndex ){ 50 $return .= mb_ereg_replace("<"," <",mb_ereg_replace( "\"","\"\"",$array[$i][$arrayIndex[$j]] )) ."\"";50 $return .= mb_ereg_replace("<","¡ã",mb_ereg_replace( "\"","\"\"",$array[$i][$arrayIndex[$j]] )) ."\""; 51 51 } else { 52 $return .= mb_ereg_replace("<"," <",mb_ereg_replace( "\"","\"\"",$array[$i][$j] )) ."\"";52 $return .= mb_ereg_replace("<","¡ã",mb_ereg_replace( "\"","\"\"",$array[$i][$j] )) ."\""; 53 53 } 54 54 } … … 60 60 61 61 /*---------------------------------------------------------------------- 62 * [ 名称] gfGetAge63 * [ 概要] 日付より年齢を計算する。64 * [ 引数] 1:日付文字列(yyyy/mm/dd、yyyy-mm-dd hh:mm:ss等)65 * [ 戻値] 年齢の数値66 * [ 依存] -67 * [ 注釈] -62 * [̾¾Î] gfGetAge 63 * [³µÍ×] ÆüÉÕ¤è¤êǯÎð¤ò·×»»¤¹¤ë¡£ 64 * [°ú¿ô] 1:ÆüÉÕʸ»úÎó(yyyy/mm/dd¡¢yyyy-mm-dd hh:mm:ssÅù) 65 * [ÌáÃÍ] ǯÎð¤Î¿ôÃÍ 66 * [°Í¸] - 67 * [Ãí¼á] - 68 68 *----------------------------------------------------------------------*/ 69 69 function gfGetAge($dbdate) … … 79 79 80 80 /*---------------------------------------------------------------------- 81 * [ 名称] gfDebugLog82 * [ 概要] ログファイルに変数の詳細を出力する。83 * [ 引数] 対象となる変数84 * [ 戻値] なし85 * [ 依存] gfPrintLog86 * [ 注釈] -81 * [̾¾Î] gfDebugLog 82 * [³µÍ×] ¥í¥°¥Õ¥¡¥¤¥ë¤ËÊÑ¿ô¤Î¾ÜºÙ¤ò½ÐÎϤ¹¤ë¡£ 83 * [°ú¿ô] ÂоݤȤʤëÊÑ¿ô 84 * [ÌáÃÍ] ¤Ê¤· 85 * [°Í¸] gfPrintLog 86 * [Ãí¼á] - 87 87 *----------------------------------------------------------------------*/ 88 88 function gfDebugLog($obj){ … … 97 97 gfPrintLog("*** end Debug ***"); 98 98 99 // ログテーション99 // ¥í¥°¥Æ¡¼¥·¥ç¥ó 100 100 gfLogRotation(MAX_LOG_QUANTITY, MAX_LOG_SIZE, LOG_PATH); 101 101 } 102 102 103 103 /*---------------------------------------------------------------------- 104 * [ 名称] gfPrintLog105 * [ 概要] ログファイルに日時、処理ファイル名、メッセージを出力106 * [ 引数] 表示したいメッセージ107 * [ 戻値] なし108 * [ 依存] なし109 * [ 注釈] -104 * [̾¾Î] gfPrintLog 105 * [³µÍ×] ¥í¥°¥Õ¥¡¥¤¥ë¤ËÆü»þ¡¢½èÍý¥Õ¥¡¥¤¥ë̾¡¢¥á¥Ã¥»¡¼¥¸¤ò½ÐÎÏ 106 * [°ú¿ô] ɽ¼¨¤·¤¿¤¤¥á¥Ã¥»¡¼¥¸ 107 * [ÌáÃÍ] ¤Ê¤· 108 * [°Í¸] ¤Ê¤· 109 * [Ãí¼á] - 110 110 *----------------------------------------------------------------------*/ 111 111 function gfPrintLog($mess, $path = '') { 112 // 日付の取得112 // ÆüÉդμèÆÀ 113 113 $today = date("Y/m/d H:i:s"); 114 // 出力パスの作成114 // ½ÐÎϥѥ¹¤ÎºîÀ® 115 115 if ($path == "") { 116 116 $path = LOG_PATH; 117 117 } 118 118 119 // エスケープされている文字をもとに戻す119 // ¥¨¥¹¥±¡¼¥×¤µ¤ì¤Æ¤¤¤ëʸ»ú¤ò¤â¤È¤ËÌ᤹ 120 120 $trans_tbl = get_html_translation_table (HTML_ENTITIES); 121 121 $trans_tbl = array_flip ($trans_tbl); … … 128 128 } 129 129 130 // ログテーション130 // ¥í¥°¥Æ¡¼¥·¥ç¥ó 131 131 gfLogRotation(MAX_LOG_QUANTITY, MAX_LOG_SIZE, $path); 132 132 } 133 133 134 134 /** 135 * ログローテーション機能135 * ¥í¥°¥í¡¼¥Æ¡¼¥·¥ç¥óµ¡Ç½ 136 136 * 137 * @param integer $max_log 最大ファイル数138 * @param integer $max_size 最大サイズ139 * @param string $path ファイルパス140 * @return void なし137 * @param integer $max_log ºÇÂç¥Õ¥¡¥¤¥ë¿ô 138 * @param integer $max_size ºÇÂ祵¥¤¥º 139 * @param string $path ¥Õ¥¡¥¤¥ë¥Ñ¥¹ 140 * @return void ¤Ê¤· 141 141 */ 142 142 function gfLogRotation($max_log, $max_size, $path) { 143 143 144 // ディレクトリ名を取得144 // ¥Ç¥£¥ì¥¯¥È¥ê̾¤ò¼èÆÀ 145 145 $dirname = dirname($path); 146 // ファイル名を取得146 // ¥Õ¥¡¥¤¥ë̾¤ò¼èÆÀ 147 147 $basename = basename($path); 148 148 149 // ファイルが最大サイズを超えていないかチェック149 // ¥Õ¥¡¥¤¥ë¤¬ºÇÂ祵¥¤¥º¤òͤ¨¤Æ¤¤¤Ê¤¤¤«¥Á¥§¥Ã¥¯ 150 150 if(filesize($path) > $max_size) { 151 151 if ($dh = opendir($dirname)) { 152 152 while (($file = readdir($dh)) !== false) { 153 // ログローテーションにて作成されたファイルを取得153 // ¥í¥°¥í¡¼¥Æ¡¼¥·¥ç¥ó¤Ë¤ÆºîÀ®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¼èÆÀ 154 154 if(ereg("^". $basename . "\." , $file)) { 155 155 $arrLog[] = $file; … … 157 157 } 158 158 159 // ファイルログが最大個数なら以上なら古いファイルから削除する159 // ¥Õ¥¡¥¤¥ë¥í¥°¤¬ºÇÂç¸Ä¿ô¤Ê¤é°Ê¾å¤Ê¤é¸Å¤¤¥Õ¥¡¥¤¥ë¤«¤éºï½ü¤¹¤ë 160 160 $count = count($arrLog); 161 161 if($count >= $max_log) { … … 166 166 } 167 167 168 // ログファイルの添え字をずらす168 // ¥í¥°¥Õ¥¡¥¤¥ë¤Îꤍ»ú¤ò¤º¤é¤¹ 169 169 $count = count($arrLog); 170 170 for($i = $count; 1 <= $i; $i--) { … … 177 177 $ret = copy($path, "$path.1"); 178 178 179 // 新規ログファイルを作成179 // ¿·µ¬¥í¥°¥Õ¥¡¥¤¥ë¤òºîÀ® 180 180 if($ret) { 181 181 unlink($path); … … 187 187 188 188 /*---------------------------------------------------------------------- 189 * [ 名称] gfMakePassword190 * [ 概要] ランダムパスワード生成(英数字)191 * [ 引数] パスワードの桁数192 * [ 戻値] ランダム生成されたパスワード193 * [ 依存] なし194 * [ 注釈] -189 * [̾¾Î] gfMakePassword 190 * [³µÍ×] ¥é¥ó¥À¥à¥Ñ¥¹¥ï¡¼¥ÉÀ¸À®¡Ê±Ñ¿ô»ú¡Ë 191 * [°ú¿ô] ¥Ñ¥¹¥ï¡¼¥É¤Î·å¿ô 192 * [ÌáÃÍ] ¥é¥ó¥À¥àÀ¸À®¤µ¤ì¤¿¥Ñ¥¹¥ï¡¼¥É 193 * [°Í¸] ¤Ê¤· 194 * [Ãí¼á] - 195 195 *----------------------------------------------------------------------*/ 196 196 function gfMakePassword($pwLength) { 197 197 198 // 乱数表のシードを決定198 // Íð¿ôɽ¤Î¥·¡¼¥É¤ò·èÄê 199 199 srand((double)microtime() * 54234853); 200 200 201 // パスワード文字列の配列を作成201 // ¥Ñ¥¹¥ï¡¼¥Éʸ»úÎó¤ÎÇÛÎó¤òºîÀ® 202 202 $character = "abcdefghkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ2345679"; 203 203 $pw = preg_split("//", $character, 0, PREG_SPLIT_NO_EMPTY); … … 212 212 213 213 /*---------------------------------------------------------------------- 214 * [ 名称] sf_explodeExt215 * [ 概要] ファイルの拡張子取得216 * [ 引数] ファイル名217 * [ 戻値] 拡張子218 * [ 依存] なし219 * [ 注釈] -214 * [̾¾Î] sf_explodeExt 215 * [³µÍ×] ¥Õ¥¡¥¤¥ë¤Î³ÈÄ¥»Ò¼èÆÀ 216 * [°ú¿ô] ¥Õ¥¡¥¤¥ë̾ 217 * [ÌáÃÍ] ³ÈÄ¥»Ò 218 * [°Í¸] ¤Ê¤· 219 * [Ãí¼á] - 220 220 *----------------------------------------------------------------------*/ 221 221 function gf_explodeExt($fileName) { … … 228 228 229 229 /*---------------------------------------------------------------------------------------------------------------------- 230 * [ 名称] gfMailHeaderAddr231 * [ 概要] 入力されたメールアドレスをメール関数用の宛先に変換232 * [ 引数] 「メールアドレス」または「名前<メールアドレス>」、複数アドレス指定時はカンマ区切りで指定する。233 * [ 戻値] 「メールアドレス」または「JIS_MIMEにコード変換した名前 <メールアドレス>」、複数アドレス指定時はカンマ区切りで返却する。234 * [ 依存] なし235 * [ 注釈] -230 * [̾¾Î] gfMailHeaderAddr 231 * [³µÍ×] ÆþÎϤµ¤ì¤¿¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò¥á¡¼¥ë´Ø¿ôÍѤΰ¸Àè¤ËÊÑ´¹ 232 * [°ú¿ô] ¡Ö¥á¡¼¥ë¥¢¥É¥ì¥¹¡×¤Þ¤¿¤Ï¡Ö̾Á°<¥á¡¼¥ë¥¢¥É¥ì¥¹>¡×¡¢Ê£¿ô¥¢¥É¥ì¥¹»ØÄê»þ¤Ï¥«¥ó¥Þ¶èÀÚ¤ê¤Ç»ØÄꤹ¤ë¡£ 233 * [ÌáÃÍ] ¡Ö¥á¡¼¥ë¥¢¥É¥ì¥¹¡×¤Þ¤¿¤Ï¡ÖJIS_MIME¤Ë¥³¡¼¥ÉÊÑ´¹¤·¤¿Ì¾Á° <¥á¡¼¥ë¥¢¥É¥ì¥¹>¡×¡¢Ê£¿ô¥¢¥É¥ì¥¹»ØÄê»þ¤Ï¥«¥ó¥Þ¶èÀÚ¤ê¤ÇÊֵѤ¹¤ë¡£ 234 * [°Í¸] ¤Ê¤· 235 * [Ãí¼á] - 236 236 *----------------------------------------------------------------------------------------------------------------------*/ 237 237 238 238 function gfMailHeaderAddr($str) { 239 $addrs = explode(",", $str); // アドレスを配列に入れる239 $addrs = explode(",", $str); //¥¢¥É¥ì¥¹¤òÇÛÎó¤ËÆþ¤ì¤ë 240 240 foreach ($addrs as $addr) { 241 241 if (preg_match("/^(.+)<(.+)>$/", $addr, $matches)) { 242 // 引数が「名前<メールアドレス>」の場合242 //°ú¿ô¤¬¡Ö̾Á°<¥á¡¼¥ë¥¢¥É¥ì¥¹>¡×¤Î¾ì¹ç 243 243 $mailaddrs[] = mb_encode_mimeheader(trim($matches[1]))." <".trim($matches[2]).">"; 244 244 } else { 245 // メールアドレスのみの場合245 //¥á¡¼¥ë¥¢¥É¥ì¥¹¤Î¤ß¤Î¾ì¹ç 246 246 $mailaddrs[] = trim($addr); 247 247 } 248 248 } 249 return implode(", ", $mailaddrs); // 複数アドレスはカンマ区切りにする249 return implode(", ", $mailaddrs); //Ê£¿ô¥¢¥É¥ì¥¹¤Ï¥«¥ó¥Þ¶èÀÚ¤ê¤Ë¤¹¤ë 250 250 } 251 251 ?>
Note: See TracChangeset
for help on using the changeset viewer.
