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 getEncoding($str, $default='auto') { foreach (array('UTF-8', 'EUC-JP', 'SJIS', 'JIS') as $charset) { if ($str == mb_convert_encoding($str, $charset, $charset)) { return $charset; } } return $default; } function send_email($sendmailpath, $subject, $from, $to, $body = "", $cc = "", $bcc = "", $files = "", $encode = "iso-2022-jp") { !$sendmailpath && $sendmailpath = "/usr/sbin/sendmail"; $ATTACH_FILES = array(); $ENCODE_DATA = array(); $TO = split(",", $to); $CC = split(",", $cc); $BCC = split(",", $bcc); $attach_files = split(",", $files); unset($to); foreach ($TO as $val) { if (preg_match("/([\w\-\.]+\@[\w\-\.]+)/", $val, $m)) { $to && $to .= ","; $to .= $m[1]; } } if (!$to) return('not mailto'); unset($cc); foreach ($CC as $val) { if (preg_match("/([\w\-\.]+\@[\w\-\.]+)/", $val, $m)) { $cc && $cc .= ","; $cc .= $m[1]; } } unset($bcc); foreach ($BCC as $val) { if (preg_match("/([\w\-\.]+\@[\w\-\.]+)/", $val, $m)) { $bcc && $bcc .= ","; $bcc .= $m[1]; } } foreach ($attach_files as $val) { $val = trim($val); if (is_file($val)) { $ATTACH_FILES[] = $val; } } $body = tag_decode($body, 1); if (count($ATTACH_FILES)) { $mimeid = 'tryinet.com' . uniqid(); } if ($mp = popen("$sendmailpath -t", "w")) { fputs($mp, "From: $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, "x-sender: $from\n"); fputs($mp, "x-mailer: tryinet.com/phplib\n"); fputs($mp, "Mime-Version: 1.0\n"); 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)) { $attach_ctype = array( 'txt' => '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', ); 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 ($attach_ctype[$ext]) { fputs($mp, "Content-type: $attach_ctype[$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("%04d年%02d月%02d日(%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 = split(":", $time); $year = $Date[0] - 1970; if ($year < 0) { return(0); } $Date[1]--; $Date[2]--; 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] + int(($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); /* list($year, $month, $day) = split("/", $date); $date = sprintf("%04d%02d%02d", $year, $month, $day)+0; $datenow = jst_time(time(), 5); list($year, $month, $day) = split("/", $datenow); $datenow = sprintf("%04d%02d%02d", $year, $month, $day)+0; return ((int)(($datenow - $date)/10000)); */ } 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 readini($filename) { $section = ""; if (is_file($filename)) { $Text = file($filename); 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 create_timeid() { $d = jst_time(time(), 10) . sprintf("%06d", getmypid()); return($d); } function createid() { return(unique_id(1, 36)); } 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() { /* * 連続生成に対応した重複しない13桁の英数字を返す */ $process = reverse(substr(reverse(getmypid()), 0, 2)); list($micro, $serial) = split(" ", microtime()); $id = H62($process.$serial, 1).sprintf("%05s", H62($micro * 100000000, 1, 36)); return($id); } function H62($ID, $flg, $asc = 62) { /* 最大14桁までの正の整数を[0-9A-Za-z]のアスキー文字に変換 $flg = 1 の場合に62文字による62進数に、 $flg = 0 の場合は元の整数に複合化する。 */ $i = 0; if ($flg) { while ($ID > 0) { $amari = fmod($ID, $asc); $ID = int($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) { list($key, $value) = split("=", $val); $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("=", "=", $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])) { $_REQUEST[$key] = tag_encode(trim($_REQUEST[$key])); } } else { unset($_REQUEST[$key]); } } } function current_Url($protocol = "") { if (!$protocol) { if ($_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))); } } } } /* 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) { if (!$cur) { return(' '); } else { return(number_format($cur)); } } function imagesize($img) { list($width, $height, $type, $attr) = getimagesize($img); } ?>