'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("/
| 都道府県<\/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("/", $html)) {
$Tags = preg_split("/", $html);
$Revtags = array_reverse($Tags);
foreach ($Revtags as $val) {
if (preg_match("/(\/(\w+)>)/i", $val, $m)) {
$tagname = strtolower($m[2]);
if (preg_grep("/$tagname/", $Freetags)) {
$Closetags[] = "$tagname>";
}
}
}
$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 == "$word>") {
$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);
}
?>
|
|---|