Sato IT Studio - PMCJ

Jcode Multi Convert library 設置詳細

【 設置に関する注意事項 】

 Unicode 変換利用の際は、Unicodeへの変換テーブルが必要です。

  下記よりダウンロードして下さい。 Unicodeコンソーシアム http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/

  ※ 必要なテーブルファイル JIS0201 JIS0208 

【 同梱ファイルとパーミッション 】

  Jcode Multi Convert library

  JMClib.pl [644] (パッケージ) JMClib.pm-0.72.4.tar.gz (.pm モジュール)   readme.txt (説明ファイル)

【 設置説明 】

  設定例

1. JMClib.plディフォルト WWW    |----lib [755]    | |    | |--- JIS [755] (Unicode変換テーブル格納ディレクトリー)    | | JIS0201 [644]    | | JIS0208 [644]    | |    | JMClib.pl [644]   2. JMClibをモジュールとして利用する場合 同梱のJMClib.pm-0.72.2.tar.gzを解凍しインストールして下さい。 $ tar xzvf JMClib-pm-0.72.4.tar.gz $ cd JMClib-pm-0.72.4 $ perl Makefile.PL $ make install (Windows => nmake install)

【 各設定について 】

  使用例

require 'JMClib.pl'; # .pl(package) の場合 use JMClib qw(Conv Form); # .pm (module) の場合 ( qw()内にて他に指定出来るもの : Content Conthtml ClientCheck xdata UserEnv TimeGet ) ---------------- ※ Code, Mime 変換 ---------------- $JMC = JMClib::Conv("A", "B", "C", "D", "E"); # .pl(package) の場合 $JMC = Conv("A", "B", "C", "D", "E"); # .pm (module) の場合 戻り値参照 $data = $JMC->data(datcv); ---------------- ※ Form Data 取得 ---------------- $JMC = JMClib::Form("B", "C", "D", "E"); # .pl(package) の場合 $JMC = Form("B", "C", "D", "E"); # .pm (module) の場合 戻り値参照 *ハッシュ取得 $key = $JMC->data(key値); ( 但しFileUpデーターは => value値 : $value = $key->[0]; filename値 : $fname = $key->[1]; fileroot値 : $froot = $key->[2]; ) *配列取得 (入力フォームに対してのkey順に取得したい場合) $ARRA = $JMC->data(array) : key値 -> $key = $ARRA->[1][0]; value値 -> $value = $ARRA->[1][1];   ( 但しFileUpデーターは key値 : $key = $ARRA->[1][0]; value値 : $value = $ARRA->[1][1]; filename値 : $fname = $ARRA->[1][2]; fileroot値 : $froot = $ARRA->[1][3]; ) # 配列取得時において、部分的にハッシュ取得したい場合 # # key(name)値の頭に「h_」を付ける # # 例 : [ h_mode ] # ---------------- ※ XML Data 取得 ---------------- $JMC = JMClib::Form("B", "C", "D", "E"); # .pl(package) の場合 $JMC = Form("B", "C", "D", "E"); # .pm (module) の場合 戻り値参照 $XmlData = $JMC->xdata(Get, Option); * Option => 1=Scalar, 2=Value Get(1) => Data->result = $name = ${$XmlData}[0]; $mail = ${$XmlData}[1]; Get(2) => Data->result->[0] = $name = ${$XmlData}{"name"}; Get(3) => Data->result->mail = $mail = ${$XmlData}[0];      * Option=1 => $mail = $XmlData; # Get(3)の場合において、配列[0]にて取得される為、Option # # に1を指定しスカラー値として取得させる為のオプション # # オプションに2を指定した場合、Getでの最後の指定にValue値 # # を指定すると、そのValue値検索となります。 # ---------------- ※ その他 ---------------- MimeTipe参照 $mime = JMClib::Content($filename); (値:Content-Type: image/jpg) ( .pm の場合 $mime = Content($filename); ) コード値参照 $code = $JMC->data(code); エラー値参照 $error = $JMC->data(error); タイム値参照 $date = $JMC->data(tmdate); (値:2004/01/01(Thu)08:39:53) $date = $JMC->data(tmstam); (値:040101083953) 依存文字値参照 $kizcv = $JMC->data(kizcv); (値:機種依存文字) 依存変換値参照 $kizck = $JMC->data(kizck); (値:機種依存文字->変換文字) データークリア $JMC->free(key値); データー置き換え $JMC->free(key値, $newdata); 端末調査 $OS = (JMClib::ClientCheck())[0]; ( .pm の場合 $OS = (ClientCheck())[0]; ) PC W => Win, M => Mac, 注意 : Macのみ引き出しているので Linux等は Win判定されます。 携帯 1 => i-mode, 2 or 2b or 2c => SoftBank(旧Vodafone) ※2b:3G(Vodafone), 2c:3G (MOT-XX) 3 or 3b => EZ (※3b:WAP2.0), 4 => AirH", 5 => ASTEL, 6 => L-mode, 7 => H" (PDXGW) スマホ 10 => iPhone iPod, 11 => Android, 12 => Win Phone 13 => その他 タブレ 20 => iPad, 21 => Android, 22 => Win Touch 23 => その他 ※ 尚、スマホ、タブレ判定で下記のような設定箇所があります。( JMClib.pl JMClib.pm ) ===================================================== ;# Androidのスマートフォン判定をタブレット判定にする機種番号指定 (複数指定は[ | ]にて指定) $NoAnSuma = 'A1_07|SC-01C';     ※ まれに、AndroidユーザーエージェントにMobileとあってもタブレット機種があります。   その機種番号を設定します。 ;# 端末判定不明の Opera Mini(ブラウザ)に対してタブレット判定 ;# [ 0:Mobile 1:Tablet 2:別判定 (戻り値 iPhone => 30、Android => 31) ] $MiniTablet = 0; ※ ユーザーエージェントに Opera Miniがある場合、 Mobile、Tabletの記載が無く判別が付かないのですが、   デフォルトでは、スマートフォン(Mobile)判定しています。任意に設定して下さい。 ※ [2] に設定した場合は、戻り値 iPhone => 30、Android => 31 となります。 ====================================================== 【 注意 】端末側のユーザーエージェント未設定等も含め  スマートフォン・タブレット端末判定に付きまして100%の判定にはなりませんので  大まかな目安としてご利用下さい。 ユーザー環境変数  ( .pm の場合 $xx = UserEnv("xxx") ) AGENT $agent = JMClib::UserEnv("agent"); REFERER $ref = JMClib::UserEnv("ref"); HOST $host = JMClib::UserEnv("host"); IP $addr = JMClib::UserEnv("addr"); # $ENV = JMClib::UserEnv(); # # 上記のように引数を省略するとハッシュ取得となります # # 例 : $agent = $ENV->{'agent'}; # タイムデーター取得  ( .pm の場合 @time = TimeGet("xxx"); ) @time = JMClib::TimeGet($tc); ( $tc => 時間調整 1 = プラス1時間, -1 = マイナス1時間) $time[0] 秒 $time[1] 分 $time[2] 時 $time[3] 日 $time[4] 月 $time[5] 年 $time[6] 週 (例:Sun) $time[10] SET1 ( $JMC->data(tmdate)と同じ ) $time[11] SET21 ( $JMC->data(tmstam)と同じ ) HTML MIME SET 取得  ( @htmlmime = Conthtml($lang); ) @htmlmime = JMClib::Conthtml($lang); ( $lang => sjis jis euc u8 u16 ) $htmlmime[0] => Content-Type: text/html; charset=Shift_JIS\n\n $htmlmime[1] => 1 各引数指定について ======================== A : In DATA to Convert ======================== =============== B . Out Code =============== 1) JcodeConv => sjis jis euc u8 u16b u16l uhx uhc 2) MimeEncode => b64 uu u7 file 3) URL-Encode => url urlul urlub urlu urle ----------------------------------------------------- * u8 -> UTF8 * u16b -> UTF16BE * u16l -> UTF16LE * uhc -> Unicode 10進HTML実体参照 例: 佐 * uhx -> Unicode 16進HTML実体参照 例: 藤 * b64 -> Base64encode * uu -> uuencode * u7 -> UTF7encode * file-> 引数Cにて b64 uu 指定時に有効 ( 例: ./xxx.tar.gz ) ※ 引数Dにて'p'指定があればprintされる * url -> Unicode以外のURLencode +ul=u16l, +ub=u16b, +u=u16, +e=u8 =============== C : In Code =============== 1) JcodeConv => sjis jis euc u8 u16b u16l uhx uhc 2) MimeDecode => b64 uu qu u7 file 3) FormParam => form forma form2 form2a (※ XML 頭に[x]をつける) 4) URL-Decode => url urlul urlub urlu urle ----------------------------------------------------- * uhc uhx url url* -> 上記参照 * b64 -> Base64ecode * uu -> uudecode * qu -> Quotedecode * u7 -> UTF7decode * file -> 引数D(Option1)の p 指定によりfile指定へprint 引数Cにて b64 uu で有効 ( 例:./xxx.tar.gz ) * form -> FormDataのハッシュ取得, +a=配列で取得, +2=name値もConvert  ※ XMLデーター取得は xform 以下同じ (省略可能) =============== D : Option1 (コード or Mime オプション) =============== 1) Client pot1 => W M D V E A L 2) Jcode pot1 => s j e ub ul uc ux u z h k kk kc kr ka b0 w 3) HTML pot1 => v d dd 4) Mime pot1 => t p n[\d]+ m ----------------------------------------------------- * W=Win, M=Mac, * D=DoCoMo, * V=vodafone (* E=EZ, * A=ASTEL, * L=L-mode) PC端末機種依存or携帯端末の絵文字Data処理の際の強制端末指定 (但しカッコ内端末は特にロジック調整はしていません) * s j e ub ul uc ux u -> sjis jis euc UTF16BE UTF16LE 10進HTML 16進HTML UTF8 引数B変換前にInCodeを違うCodeに変換 ※ 但し 引数CがForm*指定においては FormDataのCodeとなるCode指定として   UTFコード及び機種依存文字、カタカナ変換を行う場合には必至項目 # 半角カタカナとEUCの区別がつかないので # # SJISの際は's'を付ける事をお勧め致します。 # # UTF8 UTF16共に受け取るデーターがUTF8になる # # ようですので? [u]を指定の事 # ※ 引数CがMimeDecode指定においては Decodeされた文字のコード変換を行う   場合にその変換前のコードが分かっている場合は指定可能 (Text File) * z -> 半角カタカナを全角変換 * h -> 全角カタカナを半角変換 * k -> PC端末機種依存文字を表示可能文字に変換(Data取得or漢字は変換無し) +k=依存文字, +c=依存文字変換, +r = 変換以外の依存文字, +a=両方 * b0 -> UTF16 BOM無付加 * w -> 改行調整(\r\n) * v -> HTML実体参照 Convert ( 例 進or16進; -> 文字 ) * d -> 携帯絵文字(10進変換) ( dd -> 携帯絵文字削除 ) * t -> FileMimeencode/decodeの際のFileがテキストの際指定 * p -> FilePrint (FormでのUpFileでも有効) * n[\d]+ -> MimeEncodeの際の折り返し文字数 ( 例: n72 ) * m -> 「=?ISO-2022-JP?B?」と「?=」に囲まれた文字列の戻り値 ※ In Codeが sjis jis以外で Option指定が無い場合は jis変換後 encodeされる =============== E : Option2 (フォーム or 機種依存文字 オプション) =============== 1) Jcode pot2 => s j e ub ul uc ux u b0 2) Form1 pot2 => f[0-9]+k l[0-9]+k & " < > \$ , Form2 pot2 => jp gi bm pn mi mp gz zi zh bz hq ht pd do ex 3) etc pot2 => t[0-9]+ ----------------------------------------------------- CodeConvert : * s j e ub ul uc ux u b0 -> 依存文字Data取得の際のCode指定 (無指定は引数B又は 引数Cでの指定Code) Form : * f[0-9]+k -> FormData転送最大量設定 (kbytes指定 例: f600k ) * & " < > \$ , -> 左にある文字がある場合実体参照へ変換 ( 例: < -> < ) * l[0-9]+k -> FileUpLimit (kbytes指定 例: l50k ) 以下FileUp許可File指定 pic1 -> jpg(jpe,jpeg) gif bmp png tif(tiff) : 画像関連 pic2 -> psd ai eps pdf : adobe関連 zip -> gz(tar.gz, tgz) zip lzh bz2 hqx bin : 圧縮関連 mof -> doc dot pot oft xls wiz mdz obt xlt wri : Office関連 mult -> avi wav mpg(mpeg) wmv rm ram rpm au aif mid mp3 qt mov swf spl fla dcr class : マルチメディア関連 htm -> htm(html) txt -> テキスト exe -> exe dll : その他 FilePrintの際は、引数Bにて:で区切りルート指定 ( 例: "sjis:./" ) etc : * t[0-9]+ - Server TimeSet(海外 例: t9 = +9時間, t-9 = -9時間 )   WEB MAIL 等でのソース例

1. 通常メールの例 (jcode.plと共に利用した例) $name = '佐藤'; $subje = '題名'; $message = 'テスト送信'; # 「z」半角カタカナがあれば全角カタカナにし「j」jis変換後b64 # 又メールヘッダーのデーターなので「m」も付加します。 $JMC = JMClib::Conv($name, "b64", "", "jmz"); $name = $JMC->datcv; #以下同じ $JMC = JMClib::Conv($subje, "b64", "", "jmz"); $subje = $JMC->data(datcv); Subject: $subje From: $name <$masmail> To: $usermail Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=iso-2022-jp $message 2. 添付メールの例 (sample.tar.gzを添付した場合の例) Content-Type: multipart/mixed; boundary=\"------------------------1234567890d\" This is multipart message in MIME format. ----------------------1234567890 $JMC = JMClib::Conv($message, "jis", "", "z"); Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=iso-2022-jp $JMC->data(datcv); ----------------------1234567890 $JMC = JMClib::Conv($file_data, "b64"); Content-Transfer-Encoding: base64 Content-Type: application/gzip Content-Disposition: attachment; filename="sample.tar.gz $JMC->data(datcv); ----------------------1234567890-- ※ 但し、このような場合はサブルーチンを食わせてスマート?に   した方が良いかもしれない。 print MAIL &DataGet($message, 'jis', 'z'); sub DataGet{ my ($data, $ocode, $opt1) = @_; my $JMC = JMClib::Conv($data, "$ocode", "", $opt1); &error() if $JMC->data(error); $JMC->data(datcv); }   入力フォームでのソース例

$JMC = JMClib::Form(sjis, 'form2a', 'z', 'pic1pic2zip'); $mode = $JMC->data(mode); $type = $JMC->data(type); $FORM = $JMC->data(array); # 配列取得したデーター $key1 = $FORM->[0][0]; $value1 = $FORM->[0][1]; $key2 = $FORM->[1][0]; $value2 = $FORM->[1][1]; $key3 = $FORM->[2][0]; $value3 = $FORM->[2][1]; ・ ・ ・ ・ ( *$FORM = $JMC->data(array); $key1 = $FORM[0][0]; $value1 = $FORM[0][1]; でも同じ ) ※ 引数D の「z」は半角カタカナを全角にして取得。 ※ 引数E の「pic1pic2zip」は画像関連と圧縮ファイルのアップを許可。   XML データー取得でのソース例

サンプルXML <data> <user name="sato" id="0001"> <regist>2004/01/15</regist> <regist>2003/10/27</regist> <regist>2002/03/18</regist> </user> <user name="saito" id="0002"> <regist>2003/08/27</regist> </user> <user name="suzuki" id="0003"> <regist>2003/09/05</regist> <regist>2003/05/21</regist> </user> </data> sub Request{ $_ = shift; $JMC = JMClib::Form("sjis"); $Get = $JMC->xdata("data->user"); # 例1 $Get = $JMC->xdata("data->user->[0]"); # 例2 $Get = $JMC->xdata("data->sata", 2); # 例3 $Get = $JMC->xdata("data->user->name"); # 例4 ( $Get = $JMC->xdata(Get, Option); ) } ※ ルーチンFormには、$_としてデフォルト入力として下さい。 ※ Get指定にて、最後に配列指定をする場合にて ※ 例3のValue値指定の場合は、同じValueがあっても   最初の一致しか取得出来ないのでご注意下さい。   中間にも配列データーがある場合はその配列指定が必要。 例 : $JMC->xdata("data->user->regist"); ○ $JMC->xdata("data->user->regist->[0]"); × $JMC->xdata("data->user->[0]->regist->[0]"); ○ 例1 $id = ${$Get}[1]->{id}; ($Get->[1]->{id}; でも同じ) $Get = [ { name => sato, id => 0001, regist=> [ 2004/01/15, 2003/10/27, 2002/03/18 ] }, { name => saito, id => 0002, regist=> [ 2003/08/27 ] }, { name => suzuki, id => 0003, regist=> [ 2003/09/05, 2003/05/21 ] } ]; 例2 $id = ${$Get}{id}; ($Get->{id}; でも同じ) $Get = { name => "sato", id => "0001", regist=> [ "2004/01/15", "2003/10/27", "2002/03/18" ] }; 例3 ※ 例3は例2と同じ 例4 $Get = [ sato, saito, suzuki ];

戻る | HOME | SERVICES > レンタル - プログラム - フリー素材 | HOW TO | LINKS | USERS | 閉じる
 PMCJは、フリーCGIを中心としたプログラムの配布及び製作やCGIレンタルサービスをしているサイトです。
Copyright (C) 1998-2017 Sato IT Studio PMCJ by Tomio Sato. All Rights Reserved.