'text/plain', 'csv' => 'text/csv', 'xml' => 'text/xml', 'htm' => 'text/html', 'html' => 'text/html', 'gif' => 'image/gif', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'png' => 'image/png', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'bmp' => 'image/x-bmp', 'ps' => 'appilcation/postscript', 'eps' => 'appilcation/postscript', 'epsf' => 'appilcation/postscript', 'ai' => 'application/postscript', 'zip' => 'application/zip', 'lzh' => 'application/x-lzh', 'lha' => 'application/octet-stream', 'tar' => 'application/x-tar', 'gzip' => 'application/x-tar', 'cpt' => 'application/mac-compactpro', 'doc' => 'application/msword', 'xls' => 'application/vnd.ms-excel', 'ppt' => 'application/vnd.ms-powerpoint', 'rtf' => 'application/rtf', 'pdf' => 'application/pdf', 'css' => 'application/css', 'au' => 'audio/basic', 'rpm' => 'audio/x-pn-realaudio-plugin', 'swa' => 'application/x-director', 'mp3' => 'audio/mpeg', 'mp4' => 'audio/mp4', 'wav' => 'audio/x-wav', 'midi' => 'audio/midi', 'avi' => 'vide/x-msvideo', 'mpeg' => 'video/mpeg', 'mpg' => 'video/mpeg', 'wmv' => 'video/x-ms-wmv', 'flash'=> 'application/x-shockwave-flash', 'mmf' => 'application/x-smaf ', 'smaf' => 'application/x-smaf', 'hdml' => 'text/x-hdml', '3gpp2'=> 'video/3gpp2', '3g2' => 'video/3gpp2', 'amc' => 'video/3gpp2', 'kjx' => 'application/x-kjx', '3gpp' => 'video/3gpp', '3gp' => 'video/3gpp', 'amr' => 'video/3gpp', 'asf' => 'video/3gpp', 'jam' => 'application/x-jam', 'jar' => 'application/java-archive', 'jad' => 'text/vnd.sun.j2me.app-descriptor', 'exe' => 'application/octet-stream', 'khm' => 'application/x-kddi-htmlmail', 'dmt' => 'application/x-decomail-template', 'hmt' => 'application/x-htmlmail-template', 'hqx' => 'application/mac-binhex40', 'cpt' => 'application/mac-compactpro', 'php' => 'application/x-httpd-php', 'php4' => 'application/x-httpd-php', 'php3' => 'application/x-httpd-php', 'phtml'=> 'application/x-httpd-php', 'phps' => 'application/x-httpd-php-source', 'js' => 'application/x-javascript', 'swf' => 'application/x-shockwave-flash', 'eml' => 'message/rfc822', ); function create_htpasswd($id, $pw) { $text = crypt($pw, substr(crypt($id), -2)); return($text); } function iptopre($ip) { /* IPアドレスから都道府県を取得 $host = iptoaddr("110.5.11.16"); $host['IP'] : IPアドレス $host['host'] : ホスト名 $host['Pre'] : 都道府県 */ $data = array( "ip" => $ip, "token" => "45385aa2f18530f68b948d360372ea4e", "submit-ip" => "検索" ); $data = http_build_query($data, "", "&"); $header = array( "Content-Type: application/x-www-form-urlencoded", "Content-Length: ".strlen($data) ); $context = array( "http" => array( "method" => "POST", "header" => implode("\r\n", $header), "content" => $data ) ); $url = "http://www.iphiroba.jp/ip.php"; $text = mb_convert_encoding(file_get_contents($url, false, stream_context_create($context)), "UTF-8", "EUC-JP"); $lines = preg_split("/(\r\n|\n)/", $text); $ret = array( IP => '', host => '', Pre => ''); foreach ($lines as $line) { preg_match("/IPアドレス<\/th>([\d\.]+)<\/td><\/tr>/", $line, $m) && $ret['IP'] = $m[1]; preg_match("/ホスト名<\/th>([\w\.\-]+)<\/td><\/tr>/", $line, $m) && $ret['host'] = $m[1]; if (preg_match("/都道府県<\/th>(.+)<\/td><\/tr>/", $line, $m)) { $m[1] != "該当なし" && $ret['Pre'] = $m[1]; break; } } return( $ret ); } function mcryptOpen($key) { /* 【暗号化】 mcryptOpen('暗号化キー') $upw = base64_encode(mcrypt_generic($Crypt['td'], $_REQUEST['upw'])); mcryptClose(); 【複合化】 mcryptOpen('暗号化キー') $upw = mdecrypt_generic($Crypt['td'], base64_decode($member->Upw)); mcryptClose(); */ global $Crypt; if ($key) { $Crypt['key'] = md5($key); $Crypt['td'] = mcrypt_module_open('des', '', 'ecb', ''); $Crypt['mkey'] = substr($Crypt['key'], 0, mcrypt_enc_get_key_size($Crypt['td'])); $Crypt['iv'] = mcrypt_create_iv(mcrypt_enc_get_iv_size($Crypt['td']), MCRYPT_RAND); /* 暗号化モジュール初期化 */ mcrypt_generic_init($Crypt['td'], $Crypt['mkey'], $Crypt['iv']) < 0 && exit('error.'); } else { $Crypt['key'] = ""; } } function mcryptClose() { global $Crypt; if ($Crypt['key']) { mcrypt_generic_deinit($Crypt['td']); mcrypt_module_close($Crypt['td']); } } function strcrypt($str, $flag = 0, $key = '') { /* 文字列の暗号化と複合化(長い日本語文章にも対応) strcrypt([文字列], [フラグ(1=暗号化/0=複合化)], [暗号化キー]) 【暗号化】 strcrypt($_REQUEST['upw'], 1, 'KQAHGOEUXD'); 【複合化】 strcrypt($member->upw, 0, 'KQAHGOEUXD'); */ if ($key) { $ky = md5($key); $td = mcrypt_module_open('des', '', 'ecb', ''); $mkey = substr($ky, 0, mcrypt_enc_get_key_size($td)); $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); mcrypt_generic_init($td, $mkey, $iv) < 0 && exit('error.'); if ($flag) { $text = preg_replace("/(.{80})/", "$1\n", base64_encode(mcrypt_generic($td, $str))); /* Base64の最後の=は、桁合わせのため不要なので削除 */ $text = preg_replace("/=+$/", "", $text); } else { $text = trim(mdecrypt_generic($td, base64_decode($str))); } mcrypt_generic_deinit($td); mcrypt_module_close($td); } else { $text = $str; } return($text); } function pdfinfo($pdf) { $info = array(); if (`which pdfinfo`) { $buffer = `pdfinfo $pdf`; $buffers = preg_split("/(\r\n|\n|\r)/", $buffer); foreach ($buffers as $line) { @list($key, $val) = split(":", $line); if ($key) { $info[$key] = preg_replace("/^\s+/", '', $val); } } } return($info); } function pdftotext($pdf, $command = 'pdftotext', $to = "UTF8", $from = "auto") { /* Linuxコマンド [pdftotext] を使って、pdfファイルの テキストを抽出する 【例】 $text = pdftotext('test.pdf'); $text = pdftotext('test.pdf', './pdftotext'); //ローカルのコマンドを使用する場合 */ $text = ""; if (`which pdftotext` || is_file($command)) { /* 半角カナは全角に変換 全角スペース、半角スペースはすべて削除 */ $text = mb_convert_encoding(mb_convert_kana(preg_replace("/([\r\n]| | )/", '', `$command -raw $pdf -`), 'KVa'), $to, $from); } return($text); } function htmltopdf($html, $pdfpath, $font = 'ipamp') { /* pdfの生成 必ず以下のライブラリをインクルードしておくこと include("MPDF54/mpdf.php"); $font='' #明朝体 $font='ipagui' #ゴシック $font='hgrskp' #楷書体 */ $mpdf=new mPDF('ja', 'A4', 0, $font, 10, 0, 0, 0); $mpdf->WriteHTML($html); $mpdf->Output($pdfpath, 'F'); } function compact_src($text) { $text = preg_replace("/[\t\r]/", "", $text); $text = str_replace("\n", " ", $text); $text = str_replace(' {', '{', $text); $text = preg_replace("/\{ (\w+)/", '{'. "$1", $text); $text = preg_replace("/\s*([\.\;=\},\[\]\(\)<>]|\&\&|\|\||==|\&\%)\s*/", "$1", $text); return($text); } function file_get_csv (&$handle, $length = null, $d = ',', $e = '"') { /* ファイルポインタから行を取得し、CSVフィールドを処理した配列を返す $handle = ファイルハンドル $length = 取得する1行の文字数(任意) $d = 区切り文字(デフォルトはカンマ「,」) $e = 文字列囲み文字(デフォルトはダブルクォート「"」) 戻り値 = 配列または、ファイルの終端に達した場合を含み、エラー時にはFALSE -- if ($handle = fopen($filename, "r")) { $i = 0; while (($data = file_get_csv($handle))) { $cnt = count($data); if ($data[0] && $data[2] && $data[10]) { $sql = "REPLACE `Price` SET `UID` ='$data[0]', `Item` ='$data[2]', `Price` ='$data[11]'"; $sql = mb_convert_encoding($sql, "UTF-8", "SJIS"); mysql_query($sql); $i++; } } fclose($handle); } -- */ $d = preg_quote($d); $e = preg_quote($e); $_line = ""; while (($eof != true)and(!feof($handle))) { $_line .= (empty($length) ? fgets($handle) : fgets($handle, $length)); $itemcnt = preg_match_all('/'.$e.'/', $_line, $dummy); if ($itemcnt % 2 == 0) $eof = true; } $_csv_line = preg_replace('/(?:\\r\\n|[\\r\\n])?$/', $d, trim($_line)); $_csv_pattern = '/('.$e.'[^'.$e.']*(?:'.$e.$e.'[^'.$e.']*)*'.$e.'|[^'.$d.']*)'.$d.'/'; preg_match_all($_csv_pattern, $_csv_line, $_csv_matches); $_csv_data = $_csv_matches[1]; for($_csv_i=0; $_csv_i < count($_csv_data); $_csv_i++){ $_csv_data[$_csv_i] = preg_replace('/^'.$e.'(.*)'.$e.'$/s','$1',$_csv_data[$_csv_i]); $_csv_data[$_csv_i] = str_replace($e.$e, $e, $_csv_data[$_csv_i]); } return empty($_line) ? false : $_csv_data; } function limt_str($str, $len) { /* 文字列から指定の文字数を返す。 */ mb_internal_encoding("UTF-8"); $sample = array(); if (mb_strlen($str) > $len) { $sample[0] = $str; $str = mb_substr($sample[0], 0, $len). "..."; } return($str); } function get_ssitext($html) { while(preg_match("//i", $html, $m)) { $tg = ""; $separator = $m[1]; $separator = str_replace("?", '\?', $separator); $ssi = $m[2]; @list($leftdoc, $rightdoc) = @split($separator, $line); if ($ssi) { $ssitext = ""; @list($exe, $param) = @split("\?", $ssi); if (preg_match("/(\.cgi|\.php)$/", $exe)) { $url = "//". $_SERVER['SERVER_NAME']. $ssi; $ssitext = file_get_contents($url); } if (!$ssitext) { $url = $_SERVER['DOCUMENT_ROOT']. $ssi; $ssitext = file_get_contents($url); } } $html = str_replace($tg, $ssitext, $html); } return($html); } function resizeble($src, $des, $w, $h, $fixd = 0, $align = 0, $valign = 0, $filter = 0, $bg = "255,255,255", $trans = 0) { /* * 画像をサムネイルしてコピーする(jpg,png,gif) * * $src = コピー元 * $des = コピー先ファイル名(拡張子を変更すると画像タイプを変更可能) * $w = 新しい画像の幅 * $h = 新しい画像の高さ * $fixd = 1 を指定すると指定した$w,$hのサイズに固定される * これより小さい画像や、縦横比が異なる場合は余白で埋められる * $align = 余白が発生した場合の配置。デフォルトは左寄せ、1 で中央寄せ * $valign = 縦余白の配置、デフォルトは上付き、1 で中央寄せ * $filter = 1 を指定すると白マスクをかける * $bg = 255,255,255 のようなRGB形式で背景色を指定 * $trans = 1を指定すると余白が透過される(pngで出力される) * * jpg->png など、ファイルのタイプを変更する場合は、コピー先ファイル名の * 拡張子を変更するだけで指定のファイル形式に変更される */ global $image, $newimage; if (is_file($src)) { list($width, $height, $type) = getimagesize($src); if ($width == 0 || $height == 0) { return("Error: SourceFile Abnormal size"); } if ($width > $w || $height > $h || $fixd) { /* 画像が指定サイズより大きいか、余白付きが指定されていれば */ if ($width < $w && $height < $h) { $new_width = $width; $new_height = $height; } else { $wp = $w / $width; $hp = $h / $height; if ($wp < $hp) { if ($fixd) { /* 横長の大きな画像 */ $new_width = $w; $new_height = round($height * $wp); } else { $new_width = round($width * $hp); $new_height = $h; } } else { if ($fixd) { /* 縦長の大きな画像 */ $new_width = round($width * $hp);; $new_height = $h; } else { $new_width = $w; $new_height = round($height * $wp); } } } $dx = 0; $dy = 0; if ($fixd) { $newimage = imagecreatetruecolor($w, $h); $align && $dx = ($w - $new_width) / 2; $valign && $dy = ($h - $new_height) / 2; } else { $newimage = imagecreatetruecolor($new_width, $new_height); } if ($bg || $trans) { if ($trans) { /* 拡張子は自動的にpngに変換される */ $bgcolor = imagecolorallocate($newimage, 254, 201, 254); imagefill($newimage, 0, 0, $bgcolor); imagecolortransparent($newimage, $bgcolor); $des = preg_replace("/\.(\w+)$/", ".png", $des); } else { @list($r, $g, $b) = split(",", $bg); $bgcolor = imagecolorallocate($newimage, $r, $g, $b); $flg = imagefill($newimage, 0, 0, $bgcolor); } } if ($type == 2) { /* IMAGETYPE_JPEG */ $image = imagecreatefromjpeg($src); } elseif ($type == 3) { /* IMAGETYPE_PNG */ $image = imagecreatefrompng($src); } else { $image = imagecreatefromgif($src); } imagecopyresampled($newimage, $image, $dx, $dy, 0, 0, $new_width, $new_height, $width, $height); if ($filter) { imagefilter($newimage, IMG_FILTER_BRIGHTNESS, 105); } /* 保存するファイル名の拡張子でタイプを変更可能 */ if (preg_match("/\.(jpg|jpeg)$/i", $des)) { imagejpeg($newimage, $des, 100); } elseif (preg_match("/\.png$/i", $des)) { imagepng($newimage, $des, 9); } else { imagegif($newimage, $des); } return($des); } else { return($src); } } else { return("Error: File not found"); } } function getfilecontents($url, $post = array()) { $data = http_build_query($post, '', '&'); $options = array( 'http'=>array( 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded\r\n" . "User-Agent: php.file_get_contents\r\n" . "Content-Length: " . strlen($data) . "\r\n", 'content' => $data ) ); $context = stream_context_create($options); return(file_get_contents($url, false, $context)); } function getCharset($str, $default='auto') { return getEncoding($str); } function getEncoding($str, $default='auto') { $encode = $default; if (preg_match("//i", $str, $m)) { $encode = $m[1]; } else { foreach (array('UTF-8', 'EUC-JP', 'SJIS', 'JIS') as $charset) { if ($str == mb_convert_encoding($str, $charset, $charset)) { $encode = $charset; break; } } } return $encode; } function check_email($email) { $email = str_replace("<", "<", $email); $email = str_replace(">", ">", $email); if (preg_match("/(.*)\<([\w\.\-\@]+)\>/", $email, $m)) { $email = subjectiso2022($m[1], "UTF-8"). "<". $m[2]. ">"; } return($email); } function mb_send_email($subject, $from, $to, $body = "", $cc = "", $bcc = "", $files = "", $type = "plain", $encode = "iso-2022-jp", $option = "") { /* EUC-CN/GB2312/HZ : 中国(簡体字) EUC-TW : 台湾 ISO-2022-KR/EUC-KR : ハングル KOI8-R : ロシア(キリル文字) */ global $MIME_EXT; $options = array(); if ($option) { $op = split(",", $option); foreach ($op as $line) { @list($key, $val) = split("=", $line); $val && $options[$key] = $val; } } mb_language("Japanese"); mb_internal_encoding("UTF-8"); !$type && $type = "plain"; !$encode && $encode = "iso-2022-jp"; @$FROM = split(",", $from); $From = $FROM[0]; @$TO = split(",", $to); $To = ""; foreach ($TO as $val) { if (preg_match("/([\w\-\.]+\@[\w\-]+\.[\w\-\.]+)/", $val, $m)) { $To && $To .= ","; $To .= $m[1]; } } @$CC = split(",", $cc); $Cc = ""; foreach ($CC as $val) { if (preg_match("/([\w\-\.]+\@[\w\-]+\.[\w\-\.]+)/", $val, $m)) { $Cc && $Cc .= ","; $Cc .= $m[1]; } } @$BCC = split(",", $bcc); $Bcc = ""; foreach ($BCC as $val) { if (preg_match("/([\w\-\.]+\@[\w\-]+\.[\w\-\.]+)/", $val, $m)) { $Bcc && $Bcc .= ","; $Bcc .= $m[1]; } } @$Attach_files = split(",", $files); $ATTACH_FILES = array(); foreach ($Attach_files as $val) { $val = trim($val); if (is_file($val)) { $ATTACH_FILES[] = $val; } } $sender = $_SERVER['SERVER_NAME']; $mimeid = ""; if (count($ATTACH_FILES)) { $mimeid = 'tryinet.com_' . uniqid(); } $headers = join("\n", array( "MIME-Version: 1.0", "X-Sender: $sender", "X-Mailer: PHP/". phpversion(), "Message-Id: <" . md5(uniqid(microtime())) . ">", "From: $From", "Reply-To: $From", "Return-Path: $From\n" )); $Cc && $headers .= "Cc: $Cc\r\n"; $Bcc && $headers .= "Bcc: $Bcc\r\n"; $Body = ""; if ($mimeid) { $headers .= "Content-Type: multipart/mixed; boundary=\"$mimeid\"\n"; $Body .= "--$mimeid\n"; $Body .= "Content-Type: text/$type; charset=\"$encode\"\n"; } else { $headers .= "Content-Type: text/$type; charset=\"$encode\"\n"; } if ($type == "plain") { $body = preg_replace("/(\r\n| | |\r)/", "\n", $body); $body = preg_replace("/\t/", "", $body); } $Body .= $body ."\n"; if (count($ATTACH_FILES)) { foreach ($ATTACH_FILES as $attach_file) { if (is_file($attach_file)) { $filename = basename($attach_file); preg_match("/\.(.+)$/", $attach_file, $m); $ext = $m[1]; $Body .= "--$mimeid\n"; if ($MIME_EXT[$ext]) { $Body .= "Content-type: $MIME_EXT[$ext]; name=\"$filename\"\n"; } else { $Body .= "Content-type: application/octet-stream; name=\"$filename\"\n"; } $Body .= "Content-transfer-encoding: base64\n\n"; $encode_data = chunk_split(base64_encode(file_get_contents($attach_file))); $Body .= "$encode_data\n"; } } $Body .= "--$mimeid--\n"; } if ($options['subj']) { $subject = mb_encode_mimeheader($subject, $options['subj'], 'B'); } else { $subject = mb_encode_mimeheader($subject, $encode, 'B'); } $encode != "UTF-8" && $Body = mb_convert_encoding($Body, $encode, "UTF-8"); return(mail($To, $subject, $Body , $headers , "-f$From")); } function send_email($sendmailpath, $subject, $from, $to, $body = "", $cc = "", $bcc = "", $files = "", $encode = "iso-2022-jp", $sender = "") { /* PHP版send_emailライブラリ(Perl版完全互換) 1.PHPのmailコマンドより高速動作 2.メールアドレスから不正な文字列を除去 3.複数のファイルをBase64エンコードで添付可能 */ global $MIME_EXT; $err = ""; !$sendmailpath && $sendmailpath = "/usr/sbin/sendmail"; $from = check_email($from); !$sender && $sender = $_SERVER['SERVER_NAME']; $ATTACH_FILES = array(); $ENCODE_DATA = array(); $TO = @split(",", $to); $CC = @split(",", $cc); $BCC = @split(",", $bcc); $attach_files = @split(",", $files); $to = ""; foreach ($TO as $val) { if (preg_match("/([\w\-\.]+\@[\w\-\.]+)/", $val, $m)) { $to && $to .= ","; $to .= check_email($val); } } if (!$to) return('not mailto'); $cc = ""; foreach ($CC as $val) { if (preg_match("/([\w\-\.]+\@[\w\-\.]+)/", $val, $m)) { $cc && $cc .= ","; $cc .= check_email($val); } } $bcc = ""; foreach ($BCC as $val) { if (preg_match("/([\w\-\.]+\@[\w\-\.]+)/", $val, $m)) { $bcc && $bcc .= ","; $bcc .= check_email($val); } } foreach ($attach_files as $val) { $val = trim($val); if (is_file($val)) { $ATTACH_FILES[] = $val; } } $body = tag_decode($body, 1); $mimeid = ""; if (count($ATTACH_FILES)) { $mimeid = 'tryinet.com' . uniqid(); } if ($mp = popen("$sendmailpath -t", "w")) { fputs($mp, "MIME-Version: 1.0\n"); fputs($mp, "X-Sender: $sender\n"); fputs($mp, "X-Mailer: PHP/". phpversion(). "\n"); fputs($mp, "Message-Id: <" . md5(uniqid(microtime())) . ">\n"); fputs($mp, "From: $from\n"); fputs($mp, "Reply-To:$from\n"); fputs($mp, "Return-Path:$from\n"); fputs($mp, "To: $to\n"); if ($cc) fputs($mp, "Cc: $cc\n"); if ($bcc) fputs($mp, "Bcc: $bcc\n"); fputs($mp, "Subject: $subject\n"); if ($mimeid) { fputs($mp, "Content-Type: multipart/mixed; boundary=\"$mimeid\"\n"); fputs($mp, "--$mimeid\n"); fputs($mp, "Content-Type: text/plain; charset=\"$encode\"\n"); } fputs($mp, "\n"); fputs($mp, $body); fputs($mp, "\n"); if (count($ATTACH_FILES)) { for ($i = 0; $i < count($ATTACH_FILES); $i++) { $attach_file = $ATTACH_FILES[$i]; if (is_file($attach_file)) { $filename = basename($attach_file); preg_match("/\.(.+)$/", $attach_file, $m); $ext = $m[1]; fputs($mp, "--$mimeid\n"); if ($MIME_EXT[$ext]) { fputs($mp, "Content-type: $MIME_EXT[$ext]; name=\"$filename\"\n"); } else { fputs($mp, "Content-type: application/octet-stream; name=\"$filename\"\n"); } fputs($mp, "Content-transfer-encoding: base64\n\n"); $encode_data = chunk_split(base64_encode(file_get_contents($attach_file))); fputs($mp, "$encode_data\n"); } } } if ($mimeid) { fputs($mp, "--$mimeid--\n"); } fputs($mp, "\n"); pclose($mp); } else { $err = "port not open"; } return($err); } function wait($s) { sleep($s); } function cell_key($n) { $f1 = floor(($n - 1) / 26); if ($f1) { $f1 = chr($f1 + 64); } else { $f1 = ""; } $f2 = $n % 26; if ($f2) { $f2 = chr($f2 + 64); } else { $f2 = "Z"; } $f = $f1. $f2; return($f); } function receivemail($user, $pwd, $host) { if (!$user || !$pwd || !$host) { return false; } $port = 110; if ($fp = fsockopen($host, $port)) { /* ログイン */ $line = fgets($fp, 512); fputs($fp, "USER $user\r\n"); $line = fgets($fp, 512); fputs($fp, "PASS $pwd\r\n"); $line = fgets($fp, 512); if(!eregi("OK", $line)) { /* ログイン失敗? */ fclose($fp); return false; } /* メールボックス内のデータを取得 */ fputs($fp, "STAT\r\n"); $line = fgets($fp, 512); list($stat, $num, $size) = explode(' ', $line); if(0 + $num == 0) { /* データがない? */ fclose($fp); return false; } /* それぞれ受信して、配列に納める */ for($id = 1; $id <= $num; $id++) { fputs($fp, "RETR $id\r\n"); $line = fgets($fp); $msg[$id] = ""; while( !eregi("^\.\r?\n", $line) ) { $line = fgets($fp, 512); $msg[$id] .= $line; } fputs($fp, "DELE $id\r\n"); $line = fgets($fp, 512); } fputs($fp, "QUIT\r\n"); fclose($fp); return $msg; } else { return false; } } function deletedir($dir) { if ($dh = opendir($viewdir)) { while (($file = readdir($dh)) !== false) { if ($file != "." && $file != "..") { if (filetype("$dir/$file") == "dir") { $Dirs[] = $file; } else { $Files[] = $file; } } } closedir($dh); foreach ($Files as $val) { unlink("$dir/$val"); } foreach ($Dirs as $val) { deletedir("$dir/$val"); } rmdir($dir); } } function subjectiso2022($str, $encode) { $max = mb_strlen($str, $encode); $i = 0; $subject = ""; while ($i < $max) { $s = mb_substr($str, $i, 18, $encode); $i += mb_strlen($s, $encode); if ($subject) $subject .= " "; $subject .= "=?iso-2022-jp?B?" .base64_encode(mb_convert_encoding($s, "ISO-2022-JP", $encode)). "?="; } return($subject); } function post_request($url, $data, $optional_headers = null) { /* * $optional_headers変数は、 * リクエストに送信するHTTPヘッダーを格納する文字列です。 */ $params = array( 'http' => array( 'method' => 'POST', 'content' => $data ) ); if ($optional_headers !== null) { $params['http']['header'] = $optional_headers; } $ctx = stream_context_create($params); $fp = @fopen($url, 'rb', false, $ctx); if (!$fp) { throw new Exception("Problem with $url, $php_errormsg"); } $response = @stream_get_contents($fp); if ($response === false) { throw new Exception("Problem reading data from $url, $php_errormsg"); } return $response; } function post_request2($url, $data) { $data = http_build_query($data, "", "&"); $header = array( "Content-Type: application/x-www-form-urlencoded", "Content-Length: ".strlen($data) ); $context = array( "http" => array( "method" => "POST", "header" => join("\r\n", $header), "content" => $data ) ); $ret = file_get_contents($url, false, stream_context_create($context)); return($ret); } function geturl($url) { $text = file_get_contents($url); return($text); } function description($text, $len) { if (!$len) { $len = 64; } $Excerpt = @split("。", $text); $excerpt = ''; if (mb_strlen($text, 'UTF-8') <= $len) { $excerpt = $text; } elseif (mb_strlen($Excerpt[0], 'UTF-8') > $len) { $excerpt = mb_substr($Excerpt[0], 0, $len, 'UTF-8'); $excerpt .= ' ...'; } else { $strlen = 0; foreach ($Excerpt as $exc) { $strlen += mb_strlen($exc, 'UTF-8'); if ($strlen > $len) { $excerpt .= '...'; break; } $excerpt .= $exc . '。'; } } return($excerpt); } function Jcode($str, $from, $to) { /* * 0:AUTO DETECT * 1:EUC-JP * 2:Shift_JIS * 3:ISO-2022-JP(JIS) * 4:UTF-8 */ switch($from) { case "euc": $from = 1; break; case "sjis": $from = 2; break; case "jis": $from = 3; break; case "utf8": $from = 4; break; default: $from = 0; } switch($to) { case "euc": $to = 1; break; case "sjis": $to = 2; break; case "jis": $to = 3; break; case "utf8": $to = 4; break; default: $to = 1; } $jcode = JcodeConvert($str, $from, $to); return($jcode); } function jst_time($serialtime, $flag = 0) { if (!$serialtime) return(''); $Date = localtime($serialtime, true); $Date['tm_year'] += 1900; $Date['tm_mon']++; if ($flag < 3) { $Wdays = array("日","月","火","水","木","金","土"); } else { $Wdays = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); } $Date['tm_wday'] = $Wdays[$Date['tm_wday']]; $datestr = ""; switch ($flag) { case 0: $datestr = sprintf("%04d年%02d月%02d日(%s) %02d:%02d:%02d", $Date['tm_year'],$Date['tm_mon'],$Date['tm_mday'], $Date['tm_wday'], $Date['tm_hour'], $Date['tm_min'], $Date['tm_sec']); break; case 1: $datestr = sprintf("%4d年%2d月%2d日(%s)", $Date['tm_year'], $Date['tm_mon'], $Date['tm_mday'], $Date['tm_wday']); break; case 2: $datestr = sprintf("%04d年%02d月%02d日", $Date['tm_year'], $Date['tm_mon'], $Date['tm_mday']); break; case 3: $datestr = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d", $Date['tm_year'],$Date['tm_mon'],$Date['tm_mday'], $Date['tm_wday'], $Date['tm_hour'], $Date['tm_min'], $Date['tm_sec']); break; case 4: $datestr = sprintf("%04d/%02d/%02d(%s)", $Date['tm_year'], $Date['tm_mon'], $Date['tm_mday'], $Date['tm_wday']); break; case 5: $datestr = sprintf("%04d/%02d/%02d", $Date['tm_year'],$Date['tm_mon'],$Date['tm_mday']); break; case 6: $datestr = sprintf("%04d/%02d/%02d %02d:%02d", $Date['tm_year'],$Date['tm_mon'],$Date['tm_mday'], $Date['tm_hour'], $Date['tm_min']); break; case 7: $datestr = sprintf("%04d/%02d/%02d %02d:%02d:%02d",$Date['tm_year'],$Date['tm_mon'],$Date['tm_mday'],$Date['tm_hour'],$Date['tm_min'],$Date['tm_sec']); break; case 8: $datestr = sprintf("%02d/%02d/%02d", $Date['tm_year']-2000, $Date['tm_mon'], $Date['tm_mday']); break; case 9: $datestr = sprintf("%04d-%02d-%02dT%02d:%02d:%02d\+09:00",$Date['tm_year'],$Date['tm_mon'],$Date['tm_mday'],$Date['tm_hour'],$Date['tm_min'],$Date['tm_sec']); case 10: $datestr = sprintf("%04d%02d%02d%02d%02d%02d",$Date['tm_year'],$Date['tm_mon'],$Date['tm_mday'],$Date['tm_hour'],$Date['tm_min'],$Date['tm_sec']); break; default: $datestr = sprintf("%02d/%02d %02d:%02d",$Date['tm_mon'],$Date['tm_mday'],$Date['tm_hour'],$Date['tm_min']); break; } return($datestr); } function grep($match, $Array) { $Ret = array(); $Ret = array_values(preg_grep("$match", $Array)); return($Ret); } function calendar($year, $month, $timelag = '', $flag = '') { $year += 0; $month += 0; $date = "$year/$month/1"; $Date = array(); $Calendar = array(); $Date = localtime(dateserial($date, $timelag), true); if ($month == 4 || $month == 6 || $month == 9 || $month == 11) { $days = 30; } elseif ($month == 2) { if ($year % 4 == 0) { $days = 29; } else { $days = 28; } } else { $days = 31; } if ($flag == 1) { $Calendar[0] = 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'; } elseif ($flag == 2) { $Calendar[0] = 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'; } else { $Calendar[0] = '日,月,火,水,木,金,土'; } $j = 0; for ($i = 0; $i <= $Date['tm_wday']-1; $i++) { if ($i == 0) { $Calendar[1] = ' '; } else { $Calendar[1] .= ', '; } } $i = 1; $j = $Date['tm_wday']; for ($k = 1; $k <= $days; $k++) { if ($j == 0) { $Calendar[$i] = $k; } else { $Calendar[$i] .= ",$k"; } $j++; if ($j > 6) { $j = 0; $i++; } } if ($j > 0) { for ($k = $j; $k <= 6; $k++) { $Calendar[$i] .= ', '; } } return($Calendar); } function calendar2($year, $month, $timelag = 0, $flag = '', $return = '') { $date = "$year/$month/1"; $Date = array(); $Calendar = array(); $Week = array(); $Date = localtime(dateserial($date, $timelag), true); if ($month == 4 || $month == 6 || $month == 9 || $month == 11) { $days = 30; } elseif ($month == 2) { if ($year % 4 == 0) { $days = 29; } else { $days = 28; } } else { $days = 31; } if ($return) { return($days); } if ($flag) { if ($flag == 2) { $Week = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); } else { $Week = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'); } $y = '/'; $m = '/'; $d = ''; } else { $Week = array('日 ','月 ','火 ','水 ','木 ','金 ','土 '); $y = '年 '; $m = '月 '; $d = '日 '; } $j = $Date['tm_mon'] + 0; $year = sprintf("%04d", $year); $month = sprintf("%02d", $month); for ($i = 1; $i <= $days; $i++) { $val = sprintf("%02d", $i); $Calendar[$i] = "$year$y$month$m$i$d($Week[$j])"; $j++; if ($j > 6) { $j = 0; } } return($Calendar); } function dateserial($date, $timelag = 9) { /* 時差を省略すると日本時間の9時間 */ if ($timelag) { $timelag = $timelag * -3600; } @list($date, $time) = @split(" ", $date); $Date = @split("/", $date); $Time = array('', '', ''); if ($time) { $Time = @split(":", $time); } $year = $Date[0] - 1970; if ($year < 0) { return(0); } $Date[1]--; $Date[2]--; $day = 0; for($i = 1; $i <= $Date[1]; $i++) { if ($i == 4 || $i == 6 || $i == 9 || $i == 11) { $day += 30; } elseif ($i == 2) { if ($Date[0] % 4 == 0) { $day += 29; } else { $day += 28; } } else { $day += 31; } } $day = $day + $Date[2] + floor(($Date[0] - 1972) / 4 + 0.9); return($year * 31536000 + $day * 86400 + $Time[0] * 3600 + $Time[1] * 60 + $Time[2] + $timelag); } function gengo($serialtime, $flag = '') { if (!$serialtime) return(''); if ($flag) { @list($year, $month, $day) = @split("/", $serialtime); if (!$year || !$month) return(''); if (preg_match("/h/", $flag)) { $year += 1988; } elseif (preg_match("/s/", $flag)) { $year += 1925; } elseif (preg_match("/t/", $flag)) { $year += 1911; } elseif (preg_match("/m/", $flag)) { $year += 1867; } return(dateserial(sprintf("%04d/%02d/%02d", $year, $month, $day), 0)); } else { $jst = jst_time($serialtime, 5); $Date = localtime($serialtime, true); $Date['tm_year'] += 1900; $Date['tm_mon']++; if ($jst >= "1989/01/08") { $gengo = '平成'; $year = $Date['tm_year'] - 1988; } elseif ($jst >= "1926/12/25") { $gengo = '昭和'; $year = $Date['tm_year'] - 1925; } elseif ($jst >= "1912/07/30") { $gengo = '大正'; $year = $Date['tm_year'] - 1911; } elseif ($jst >= "1868/09/08") { $gengo = '明治'; $year = $Date['tm_year'] - 1867; } return("$gengo $year/". $Date['tm_mon']. "/". $Date['tm_mday']); } } function age($date) { list($year, $month, $day) = preg_split("/[\/\-]/", $date); $datenow = jst_time(time(), 5); @list($year2, $month2, $day2) = @split("/", $datenow); $age = $year2 - $year; if ($month > $month2) { $age--; } elseif ($month == $month2) { if ($day > $day2) { $age--; } } return($age); } function read_purse() { $Getkeys = array_keys($_GET); foreach ($Getkeys as $key) { $_POST[$key] = $_GET[$key]; $_POST[$key] = str_replace("\n", "", $_POST[$key]); } } function saveini($filename, $Buffer) { /* Windows イニシャライズファイル(.ini)形式に フォーマットされた配列をファイルに保存 */ $fp = fopen($filename, "w+"); flock($fp, LOCK_SH); fwrite($fp, $Buffer); flock($fp, LOCK_UN); fclose($fp); } function data_read($filename) { if (is_file($filename)) { return(file($filename)); } else { return(array()); } } function data_save($filename, $Buffer = array()) { if ($filename) { $fp = fopen($filename, "w+"); flock($fp, LOCK_SH); foreach ($Buffer as $val) { if (!preg_match("/\n$/", $val)) $val .= "\n"; fwrite($fp, $val); } flock($fp, LOCK_UN); fclose($fp); } } function addfile($filename, $value) { /* ファイルの最後にデータを追加する */ $fh = fopen($filename, "a"); flock($fh, LOCK_SH); if (!preg_match("/\n$/", $value)) $value .= "\n"; fwrite($fh, $value); flock($fh, LOCK_UN); fclose($fh); } function file_put_ini($filename, $buffer) { $buffer = preg_replace("/(.{80})/", "$1\n", base64_encode($buffer)); file_put_contents($filename, $buffer); } function file_get_ini($filename) { if (is_file($filename)) { $buffer = file_get_contents($filename); if (!preg_match("/\[\w+\]/", $buffer)) { $buffer = base64_decode($buffer); } $Text = @split("\n", $buffer); foreach ($Text as $val) { $val = preg_replace("/\n/", "", $val); if ($val != '' && preg_match("/^#/", $val) == null) { if (preg_match("/^\[(.+)\]/", $val, $m)) { $section = $m[1]; unset($GLOBALS[$section]); $$section = array(); global $$section; } else { if ($section) { if (preg_match("/=/", $val)) { @list($key, $value) = @split("=", $val); $key = trim($key); $value = trim($value); $value = str_replace("=", "=", $value); $value = str_replace(" ", "\r", $value); ${$section}[$key] = $value; } else { $val = tag_decode($val); $val = preg_replace("/\r\n\t/", "", $val); ${$section}[] = $val; } } } } } } } function readini($filename) { $section = ""; $Text = array(); if (preg_match("/http:/", $filename)) { $buffer = file_get_contents($filename); $Text = @split("\n", $buffer); } elseif (is_file($filename)) { $Text = file($filename); } if (count($Text)) { foreach ($Text as $val) { $val = preg_replace("/\n/", "", $val); if ($val != '' && preg_match("/^#/", $val) == null) { if (preg_match("/^\[(.+)\]/", $val, $m)) { $section = $m[1]; unset($GLOBALS[$section]); $$section = array(); global $$section; } else { if ($section) { if (preg_match("/=/", $val)) { @list($key, $value) = @split("=", $val); $key = trim($key); $value = trim($value); $value = str_replace("=", "=", $value); $value = str_replace(" ", "\r", $value); ${$section}[$key] = $value; } else { $val = tag_decode($val); $val = preg_replace("/\r\n\t/", "", $val); ${$section}[] = $val; } } } } } } else { $err = 'Not Read Initial setting File'; } } function createpw($len = 8) { $Ascii = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_!();:-<>[]'; $pw = ""; for($i = 1; $i <= $len; $i++) { $pw .= substr($Ascii, mt_rand(0, 72), 1); } return($pw); } function create_timeid() { $d = jst_time(time(), 10) . sprintf("%06d", getmypid()); return($d); } function createid() { return(microid()); } function unique_id($op = 0, $asc = 62) { /* 重複しないユニークなIDの生成(9桁まで英数字) H62()及びAscii()関数必須 1から99までの引数を与えることも可能で、同一プロセス内でも99個までは作成可能 【例】 $id = unique_id(); $ID[$no] = unique_id($no); $Serialtime = substr(H62($id, 0), 0, 10); で作成時のシリアルタイムを取得可能。 */ $process = "0000". getmypid(); if ($op) { $process = reverse(substr(reverse($process), 0, 2)) . sprintf("%02d", $op); } else { $process = reverse(substr(reverse($process), 0, 4)); } usleep(100000); return(H62(time().$process, 1, $asc)); } function microid($flg = 36) { /* * 連続生成に対応した重複しない13桁の英数字を返す */ @list($b, $a) = split(" ", microtime()); $b = sprintf("%05s", $b * 1000000); $id = H62(rand(1, 9). "$a$b", 1, $flg); return($id); } function H62($ID, $flg, $asc = 62) { /* 最大14桁までの正の整数を[0-9A-Za-z]のアスキー文字に変換 $flg = 1 の場合に62文字による62進数に、 $flg = 0 の場合は元の整数に複合化する。 */ $i = 0; $value = ""; if ($flg) { while ($ID > 0) { $amari = fmod($ID, $asc); $ID = floor($ID / $asc); $value .= Ascii($amari, 1); $i++; if ($i > 1000) break; } $value = strrev($value); } else { $len = strlen($ID); $col = 1; for($i=0;$i<$len;$i++) { $a = substr($ID, $i, 1); $v = Ascii($a, 0); if ($col == 1) { $value = $v * $asc; } else { $value += $v; if ($col >= $len) { break; } $value = $value * $asc; } $col++; } } settype($value, "string"); return($value); } function Ascii($cd, $flg, $asc = 0) { /* H62(62進法)関数で必須 */ if ($asc) { $Ascii = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; } else { $Ascii = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; } if ($flg) { $i = substr($Ascii, $cd, 1); } else { $i = strpos($Ascii, $cd); } return($i); } function dbfields($buffer) { $Array = @preg_split("/\t/", $buffer); foreach ($Array as $val) { @list($key, $value) = @split("=", $val); $key = tag_decode($key); $value = tag_decode($value); $Field[$key] = $value; } return($Field); } function objfields($buffer) { $Array = preg_split("/\t/", $buffer); foreach ($Array as $val) { if ($val != '') { @list($key, $value) = @split("=", $val); if ($key != '') { $key = tag_decode($key); $value = tag_decode($value); $Field->$key = $value; } } } return($Field); } function tag_encode($buffer) { $buffer = str_replace("=", "=", $buffer); $buffer = str_replace("<", "<", $buffer); $buffer = str_replace(">", ">", $buffer); $buffer = str_replace("\"", """, $buffer); $buffer = str_replace("'", "'", $buffer); $buffer = str_replace("\t", " ", $buffer); $buffer = str_replace("\r", " ", $buffer); $buffer = str_replace("\n", "", $buffer); /* * 自動的に\を付加する(マジッククオート)PHP設定の\を削除する */ if (get_magic_quotes_gpc()) { $buffer = stripslashes($buffer); } $buffer = trim($buffer); return($buffer); } function tag_decode($buffer, $tag = 0) { $buffer = str_replace("&eq;", "=", $buffer); $buffer = str_replace("=", "=", $buffer); $buffer = str_replace(" ", "\r", $buffer); $buffer = str_replace(" ", "\t", $buffer); $buffer = str_replace(""", '"', $buffer); $buffer = str_replace("'", "'", $buffer); if ($tag) { $buffer = str_replace("<", "<", $buffer); $buffer = str_replace(">", ">", $buffer); } return($buffer); } function tag_check($html, $Freetags = array()) { /* 指定されたタグ(配列$Freetags)以外のタグを完全に削除する */ $Singletags = array("input"=>1,"br"=>1,"hr"=>1,"img"=>1,"meta"=>1,"li"=>1,"!"=>1); $html = tag_decode($html, 1); $Opentags = array(); if (preg_match("/)/i", $val, $m)) { $tagname = strtolower($m[2]); if (preg_grep("/$tagname/", $Freetags)) { $Closetags[] = ""; } } } $string = $Tags[0]; $tags = count($Tags); for ($i = 1; $i < $tags; $i++) { $tag = $Tags[$i]; if (preg_match("/>/", $tag)) { $tag = "<$tag"; $match = 0; if (preg_match("/<(\w+)/i", $tag, $m)) { $word = strtolower($m[1]); $Opentags[] = "<$word>"; if (preg_grep("/^$word$/i", $Freetags)) { if ($Singletags[$word]) { $match = 1; } else { $i = 0; foreach ($Closetags as $closetag) { if ($closetag == "") { $match = 1; last; } $i++; } if ($match) { $Closetags = array_splice($Closetags, $i, 1); } } } } else { if (preg_match("/<\/(\w+)([\w\:]*)>/i", $tag, $m)) { $word = strtolower($m[1]); if (preg_grep("/^$word$/", $Freetags) == null) { $tag = preg_replace("/<\/$word([\w\:]*)>/i", "", $tag); $match = 1; } else { $i = 0; foreach ($Opentags as $opentag) { if ($opentag == "<$word>") { $match = 1; last; } $i++; } if ($match) { $Opentags = array_splice($Opentags, $i, 1); } } } else { $match = 1; } } } else { $tag = preg_replace("/[!-:A-~\s\=]+/", "", $tag); $match = 1; } if ($match != 1) { $tag = preg_replace("/<.*>/", "", $tag); } $string .= $tag; } } else { $string = $html; } $string = preg_replace("/[\t\n\r]/", "", $string); return($string); } function REQUEST_Purse() { $Keys = array_keys($_REQUEST); foreach ($Keys as $key) { if (!array_key_exists($key, $_FILES) && !array_key_exists($key, $_COOKIE)) { if (is_array($_REQUEST[$key])) { /* 一次元配列まで */ foreach ($_REQUEST[$key] as &$line) { $line = tag_encode(trim($line)); $line = str_replace('㈱', '(株)', $line); $line = mb_convert_kana($line, "a", "UTF-8"); } } else { $_REQUEST[$key] = tag_encode(trim($_REQUEST[$key])); $_REQUEST[$key] = str_replace('㈱', '(株)', $_REQUEST[$key]); $_REQUEST[$key] = mb_convert_kana($_REQUEST[$key], "a", "UTF-8"); } } else { unset($_REQUEST[$key]); } } } function current_Url($protocol = "") { if (!$protocol) { if (isset($_SERVER['HTTPS'])) { $protocol = "https://"; } else { $protocol = "http://"; } } $url = $protocol. $_SERVER['SERVER_NAME']. current_Dir(); return(preg_replace("/\/$/", "", $url)); } function current_Dir() { $currentDir = $_SERVER['SCRIPT_NAME']; $currentDir = preg_replace("/\/$/", "", $currentDir); $Dir = @split("/", $currentDir); $dir = ''; for ($i=1; $i < count($Dir) - 1; $i++) { $dir .= "/$Dir[$i]"; } return(preg_replace("/\/$/", "", $dir)); } function rss_time($serialtime, $flag = 0) { return(jst_time($serialtime, 9)); } function deg($val) { $a = floor($val); $b = floor(($val - $a) * 100); $c = floor(($val - ($a + $b / 100)) * 10000 + 0.000001); if ($c >= 100) { $c -= 100; $b += 1; } return(($a + $b / 60 + $c / 3600) * gmp_sign($val)); } function dms($val) { $a = floor($val); $b = floor(($val - $a) * 100); $e = floor($b * 0.6) / 100; $c = ($val - ($a + $b / 100)) * 10000; $d = floor(($c * 0.000036 + ($b * 0.6 - floor($b * 0.6)) * 0.006) * 10000 + 0.5) / 10000; if ($d >= 0.006) { $d -= 0.006; $e += 0.01; } $e = floor($e * 100 + 0.5) / 100; if ($e >= 0.6) { $e -= 0.6; $a++; } return(($a + $e + $d) * gmp_sign($val)); } function cat($str, $len) { if (klength($str) > $len) { if (strpos("。") != false) { $Part = preg_split("/。/", $str); $last = count($Part) - 1; $string = "";$i = 0; foreach ($Part as $line) { if (klength("$string$line") > $len) break; $i != $last && $string .= $line. "。"; $i++; } } else { $string = $str; } $string = $str; if (klength($string) > $len) $string = ksubstr($string, 0, $len); } else { $string = $str; } return($string); } function unzip($file){ $zip = zip_open($file); if(is_resource($zip)){ $tree = ""; while(($zip_entry = zip_read($zip)) !== false){ if(strpos(zip_entry_name($zip_entry), DIRECTORY_SEPARATOR) !== false){ $last = strrpos(zip_entry_name($zip_entry), DIRECTORY_SEPARATOR); $dir = substr(zip_entry_name($zip_entry), 0, $last); $file = substr(zip_entry_name($zip_entry), strrpos(zip_entry_name($zip_entry), DIRECTORY_SEPARATOR)+1); if(!is_dir($dir)){ @mkdir($dir, 0755, true) or die("Unable to create $dir\n"); } if(strlen(trim($file)) > 0){ $return = @file_put_contents($dir."/".$file, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry))); if($return === false){ die("Unable to write file $dir/$file\n"); } } }else{ file_put_contents($file, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry))); } } } } function mb_wordwrap($str, $w, $ascii = "") { $str = preg_replace("/( |[\t])/", "", $str); $str = mb_convert_kana($str, "KVa"); $strings = preg_split("/(\r\n| | | |[\r\n])/", $str); foreach ($strings as &$line) { $line = mb_wordwrap2($line, $w, $ascii); } return(join("\r", $strings)); } function mb_wordwrap2($str, $w, $ascii) { $width = mb_strwidth($str, "UTF-8"); $arr = array(); if ($width <= $w) return($str); if ($ascii) { return(wordwrap($str, $w, "\r")); } else { $buff = array(); while($width > $w){ $trimStr = mb_strimwidth($str , 0, $w, "", "UTF-8"); $buff[] = $trimStr; $str = str_replace($trimStr, "", $str); $width = mb_strwidth($str, "UTF-8"); } $buff[] = $str; return(join("\r", $buff)); } } function insertCR($str, $w) { $str = preg_replace("/( |[\t])/", "", $str); $strings = preg_split("/(\r\n| |[\r\n])/", $str); foreach ($strings as &$line) { $line = insertCR2($line, $w); } return(join("\r", $strings)); } function insertCR2($str, $w) { $max = mb_strlen($str, "UTF-8"); $strings = array(); for ($i = 0; $i < $max; $i += $w) { $strings[] = mb_substr($str, $i, $w, "UTF-8"); } return(join("\r", $strings)); } function nkf ($src, $des, $to = "UTF-8", $from = "SJIS") { !$des && $des = $src; $dummy = $des. ".". createid(); if ($read = fopen($src, "r")) { $write = fopen($dummy, "w"); while ($buffer = fgets($read)) { fwrite($write, mb_convert_encoding($buffer, $to, $from)); } } fclose($write); fclose($read); $src == $des && unlink($src); rename($dummy, $des); } function unzip_archive($zipfile, $path) { !preg_match("/\/$/", $path) && $path .= "/"; $zip = new ZipArchive(); $res = $zip->open($zipfile); if ($res === true) { /* zipファイルのオープンに成功すれば圧縮ファイル内の全てのファイルを 指定した解凍先に展開する */ $zip->extractTo($path); $zip->close(); } } function zip_archive($zipfile, $filepath, $pass = "") { /* $zipfile : 圧縮ファイル名 $filepath : 圧縮するファイル カンマで区切って複数指定可能 ディレクトリの場合はサブディレクトリを含む */ global $zip, $Archivefiles; $filepath = preg_replace("/\/$/", "", $filepath); $Archivefiles = array(); /* zipクラスのインスタンスを生成 */ $zip = new ZipArchive(); /* ZIPファイルをオープン */ $res = $zip->open($zipfile, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE); /* zipファイルのオープンに成功した場合 */ if ($res === true) { if (preg_match("/\,/", $filepath)) { $files = split(",", $filepath); foreach ($files as $path) { /* 圧縮するファイルを追加する */ if (is_file($path)) { $file = get_filename($path); $zip->addFile($path, $file); $Archivefiles[] = $path; } } } else { $type = filetype($filepath); if ($type == "dir") { $relative = get_filename($filepath);; zipDir($filepath, $relative); } else { /* 圧縮するファイルを追加する */ if (is_file($filepath)) { $file = get_filename($filepath); $zip->addFile($filepath, $file); $Archivefiles[] = $filepath; } } } if ($pass) { //$zip->setPassword('abcd'); } /* ZIPファイルをクローズ */ $zip->close(); chmod($zipfile, 0666); } return($Archivefiles); } function zipDir($path, $relative) { global $zip, $Archivefiles; if ($dh = opendir($path)) { $zip->addEmptyDir($relative); while (($file = readdir($dh)) !== false) { if (!preg_match("/^\./", $file)) { $type = filetype($path. "/$file"); if ($type == "file") { $zip->addFile($path. "/$file", "$relative/$file"); $Archivefiles[] = $path. "/$file"; } else { zipDir("$path/$file", "$relative/$file"); } } } closedir($dh); } } function get_filename($path) { $Dir = @split("/", $path); $cnt = count($Dir); return($Dir[$cnt-1]); } function set_crypt_file($path, $buffer = array(), $key) { $buff = join("\n", $buffer); $key && $buff = strcrypt($buff, 1, $key); file_put_contents($path, $buff); } function get_crypt_file($path, $key) { $buffer = array(); if (is_file($path)) { $buff = file_get_contents($path); $key && $buff = strcrypt($buff, 0, $key); $buffer = split("\n", $buff); } return($buffer); } /* Perl関数のエイリアス */ function reverse($str) { return(strrev($str)); } function length($str) { return(strlen($str)); } function index($str) { return(strpos($str)); } /* function int($var) { return(floor($var)); } */ function comma($cur, $flg = 0) { if (!$cur && !$flg) { return(''); } else { return(number_format($cur)); } } function imagesize($img) { list($width, $height, $type, $attr) = getimagesize($img); } ?>