OSDN Git Service

BugTrack2/9: Remove all #freeze convert plugin
[pukiwiki/pukiwiki.git] / keitai.ini.php
index a70dacd..5eeebb1 100644 (file)
@@ -2,54 +2,21 @@
 /////////////////////////////////////////////////
 // PukiWiki - Yet another WikiWikiWeb clone.
 //
-// $Id: keitai.ini.php,v 1.1 2004/07/05 12:13:21 henoheno Exp $
+// $Id: keitai.ini.php,v 1.17 2004/10/31 02:01:38 henoheno Exp $
 //
 // PukiWiki setting file (Cell phones, PDAs and other thin clients)
 
 /////////////////////////////////////////////////
-// max_size (SKIN¤Ç»ÈÍÑ)
-
-$max_size = 5; //KByte (default)
-
-$matches = array();
-switch ($user_agent['name']) {
-
-       // DoCoMo Net For MOBILE: £é¥â¡¼¥ÉÂбþHTML¤Î¹Í¤¨Êý: ¥æ¡¼¥¶¥¨¡¼¥¸¥§¥ó¥È
-       // http://www.nttdocomo.co.jp/mc-user/i/tag/imodetag.html
-       // DDI POCKET: µ¡¼ï¥é¥¤¥ó¥Ê¥Ã¥×: AirH"PHONEÍÑ¥Û¡¼¥à¥Ú¡¼¥¸¤ÎºîÀ®ÊýË¡
-       // http://www.ddipocket.co.jp/p_s/products/airh_phone/homepage.html
-       case 'DoCoMo':
-       case 'CNF':
-               if (preg_match('#[/\(]c([0-9]+)[/\);]#',
-                   $user_agent['agent'], $matches))
-                       $max_size = $matches[1];
-               break;
-
-       // Vodafone µ»½Ñ»ñÎÁ: ¥æ¡¼¥¶¡¼¥¨¡¼¥¸¥§¥ó¥È¤Ë¤Ä¤¤¤Æ
-       // http://www.dp.j-phone.com/dp/tool_dl/web/useragent.php
-       case 'J-PHONE':
-               if (preg_match('#Profile/#', $user_agent['agent'])) {
-                       // ¥Ñ¥±¥Ã¥ÈÂбþµ¡
-                       $max_size = 12; // SKIN¤Ç»ÈÍÑ, KByte
-               } else {
-                       // ¥Ñ¥±¥Ã¥ÈÈóÂбþµ¡
-                       $max_size =  6;
-               }
-               break;
-
-}
-switch ($user_agent['name'] . '/' . $user_agent['vers']) {
-       case 'DoCoMo/2.0':      $max_size = min($max_size, 30); break;
-}
-unset($matches);
+// ·ÈÂÓ¡¦PDAÀìÍѤΥڡ¼¥¸¤ò½é´ü¥Ú¡¼¥¸¤È¤·¤Æ»ØÄꤹ¤ë
 
+// $defaultpage = 'm';
 
 /////////////////////////////////////////////////
 // ¥¹¥­¥ó¥Õ¥¡¥¤¥ë¤Î¾ì½ê
-define('SKIN_FILE',SKIN_DIR.'keitai.skin.'.LANG.'.php');
+define('SKIN_FILE', DATA_HOME . SKIN_DIR . 'keitai.skin.php');
 
 /////////////////////////////////////////////////
-// ¿÷·Á¤È¤¹¤ë¥Ú¡¼¥¸¤ÎÆɤ߹þ¤ß¤òɽ¼¨¤µ¤»¤ë
+// ¿÷·Á¤È¤¹¤ë¥Ú¡¼¥¸¤ÎÆɤ߹þ¤ß¤ò²Äǽ¤Ë¤¹¤ë
 $load_template_func = 0;
 
 /////////////////////////////////////////////////
@@ -62,19 +29,13 @@ $list_index = 0;
 
 /////////////////////////////////////////////////
 // ¥ê¥¹¥È¹½Â¤¤Îº¸¥Þ¡¼¥¸¥ó
-$_ul_left_margin = 0;   // ¥ê¥¹¥È¤È²èÌ̺¸Ã¼¤È¤Î´Ö³Ö(px)
-$_ul_margin = 16;       // ¥ê¥¹¥È¤Î³¬Áش֤δֳÖ(px)
-$_ol_left_margin = 0;   // ¥ê¥¹¥È¤È²èÌ̺¸Ã¼¤È¤Î´Ö³Ö(px)
-$_ol_margin = 16;       // ¥ê¥¹¥È¤Î³¬Áش֤δֳÖ(px)
-$_dl_left_margin = 0;   // ¥ê¥¹¥È¤È²èÌ̺¸Ã¼¤È¤Î´Ö³Ö(px)
-$_dl_margin = 16;        // ¥ê¥¹¥È¤Î³¬Áش֤δֳÖ(px)
-$_list_pad_str = '';
-
-/////////////////////////////////////////////////
-// cols: ¥Æ¥­¥¹¥È¥¨¥ê¥¢¤Î¥«¥é¥à¿ô rows: ¹Ô¿ô
-
-$cols = 22; $rows = 5; // i_mode
-$cols = 24; $rows = 20; // jphone
+$_ul_left_margin =  0; // ¥ê¥¹¥È¤È²èÌ̺¸Ã¼¤È¤Î´Ö³Ö(px)
+$_ul_margin      = 16; // ¥ê¥¹¥È¤Î³¬Áش֤δֳÖ(px)
+$_ol_left_margin =  0; // ¥ê¥¹¥È¤È²èÌ̺¸Ã¼¤È¤Î´Ö³Ö(px)
+$_ol_margin      = 16; // ¥ê¥¹¥È¤Î³¬Áش֤δֳÖ(px)
+$_dl_left_margin =  0; // ¥ê¥¹¥È¤È²èÌ̺¸Ã¼¤È¤Î´Ö³Ö(px)
+$_dl_margin      = 16; // ¥ê¥¹¥È¤Î³¬Áش֤δֳÖ(px)
+$_list_pad_str   = '';
 
 /////////////////////////////////////////////////
 // Â硦¾®¸«½Ð¤·¤«¤éÌܼ¡¤ØÌá¤ë¥ê¥ó¥¯¤Îʸ»ú
@@ -92,7 +53,6 @@ $rule_related_str = "</li>\n<li>";
 // ¿åÊ¿Àþ¤Î¥¿¥°
 $hr = '<hr>';
 
-/////////////////////////////////////////////////
 // Ê¸Ëö¤ÎÃí¼á¤ÎľÁ°¤Ëɽ¼¨¤¹¤ë¥¿¥°
 $note_hr = '<hr>';
 
@@ -109,37 +69,299 @@ $show_passage = 0;
 $link_compact = 1;
 
 /////////////////////////////////////////////////
-// ¥Õ¥§¥¤¥¹¥Þ¡¼¥¯¤ò»ÈÍѤ¹¤ë
-$usefacemark = 0;
+// ¥Õ¥§¥¤¥¹¥Þ¡¼¥¯¤ò³¨Ê¸»ú¤ËÊÑ´¹¤¹¤ë (¢¨i-mode, Vodafone, EzWeb¤Ê¤É·ÈÂÓÅÅÏøÂÄê)
+$usefacemark = 1;
 
 /////////////////////////////////////////////////
 // accesskey (SKIN¤Ç»ÈÍÑ)
 $accesskey = 'accesskey';
 
 /////////////////////////////////////////////////
+// $script¤òû½Ì
+if (preg_match('#([^/]+)$#', $script, $matches)) {
+       $script = $matches[1];
+}
+
+/////////////////////////////////////////////////
+// ¥Ö¥é¥¦¥¶Ä´À°Á°¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ
+
+// max_size (SKIN¤Ç»ÈÍÑ)
+$max_size = 5; // SKIN¤Ç»ÈÍÑ, KByte
+
+// cols: ¥Æ¥­¥¹¥È¥¨¥ê¥¢¤Î¥«¥é¥à¿ô rows: ¹Ô¿ô
+$cols = 22; $rows = 5; // i_mode
+
+
+/////////////////////////////////////////////////
+// ¥Ö¥é¥¦¥¶¤Ë¹ç¤ï¤»¤¿Ä´À°
+
+$ua_name  = $user_agent['name'];
+$ua_vers  = $user_agent['vers'];
+$ua_agent = $user_agent['agent'];
+$matches  = array();
+
+// Browser-name only
+switch ($ua_name) {
+
+       // NetFront / Compact NetFront
+       //   DoCoMo Net For MOBILE: £é¥â¡¼¥ÉÂбþHTML¤Î¹Í¤¨Êý: ¥æ¡¼¥¶¥¨¡¼¥¸¥§¥ó¥È
+       //   http://www.nttdocomo.co.jp/mc-user/i/tag/imodetag.html
+       //   DDI POCKET: µ¡¼ï¥é¥¤¥ó¥Ê¥Ã¥×: AirH"PHONEÍÑ¥Û¡¼¥à¥Ú¡¼¥¸¤ÎºîÀ®ÊýË¡
+       //   http://www.ddipocket.co.jp/p_s/products/airh_phone/homepage.html
+       case 'NetFront':
+       case 'CNF':
+       case 'DoCoMo':
+       case 'Opera': // Performing CNF compatible
+               if (preg_match('#\b[cC]([0-9]+)\b#', $ua_agent, $matches)) {
+                       $max_size = $matches[1];        // Cache max size
+               }
+               $cols = 22; $rows = 5;  // i_mode
+               break;
+
+       // Vodafone (ex. J-PHONE)
+       // ¥Ü¡¼¥À¥Õ¥©¥ó¥é¥¤¥Ö¡ª¸þ¤±¥¦¥§¥Ö¥³¥ó¥Æ¥ó¥Ä³«È¯¥¬¥¤¥É [³µÍ×ÊÔ] (Version 1.2.0 P13)
+       // http://www.dp.j-phone.com/dp/tool_dl/download.php?docid=110
+       // µ»½Ñ»ñÎÁ: ¥æ¡¼¥¶¡¼¥¨¡¼¥¸¥§¥ó¥È¤Ë¤Ä¤¤¤Æ
+       // http://www.dp.j-phone.com/dp/tool_dl/web/useragent.php
+       case 'J-PHONE':
+               $matches = array("");
+               preg_match('/^([0-9]+)\./', $user_agent['vers'], $matches);
+               switch($matches[1]){
+               case '3': $max_size =   6; break; // C type: lt   6000bytes
+               case '4': $max_size =  12; break; // P type: lt  12Kbytes
+               case '5': $max_size = 200; break; // W type: lt 200Kbytes
+               }
+               $cols = 24; $rows = 20;
+               break;
+
+       // UP.Browser
+       case 'UP.Browser':
+               // UP.Browser for KDDI cell phones
+               // http://www.au.kddi.com/ezfactory/tec/spec/xhtml.html ('About 9KB max')
+               // http://www.au.kddi.com/ezfactory/tec/spec/4_4.html (User-agent strings)
+               if (preg_match('#^KDDI#', $ua_agent)) $max_size =  9;
+               break;
+}
+
+// Browser-name + version
+switch ("$ua_name/$ua_vers") {
+       // Restriction For imode:
+       //  http://www.nttdocomo.co.jp/mc-user/i/tag/s2.html
+       case 'DoCoMo/2.0':      $max_size = min($max_size, 30); break;
+}
+
+
+/////////////////////////////////////////////////
 // ¥æ¡¼¥¶ÄêµÁ¥ë¡¼¥ë
 //
 //  Àµµ¬É½¸½¤Çµ­½Ò¤·¤Æ¤¯¤À¤µ¤¤¡£?(){}-*./+\$^|¤Ê¤É
 //  ¤Ï \? ¤Î¤è¤¦¤Ë¥¯¥©¡¼¥È¤·¤Æ¤¯¤À¤µ¤¤¡£
 //  Á°¸å¤Ëɬ¤º / ¤ò´Þ¤á¤Æ¤¯¤À¤µ¤¤¡£¹ÔƬ»ØÄê¤Ï ^ ¤òƬ¤Ë¡£
 //  ¹ÔËö»ØÄê¤Ï $ ¤ò¸å¤í¤Ë¡£
-///////////////////////////////////////////////////
+
 // ¥æ¡¼¥¶ÄêµÁ¥ë¡¼¥ë(¥³¥ó¥Ð¡¼¥È»þ¤ËÃÖ´¹)
 $line_rules = array(
-"COLOR\(([^\(\)]*)\){([^}]*)}" => '<font color="$1">$2</font>',
-"SIZE\(([^\(\)]*)\){([^}]*)}" => '$2',
-"COLOR\(([^\(\)]*)\):((?:(?!COLOR\([^\)]+\)\:).)*)" => '<font color="$1">$2</font>',
-"SIZE\(([^\(\)]*)\):((?:(?!SIZE\([^\)]+\)\:).)*)" => '$2',
-"%%%(?!%)((?:(?!%%%).)*)%%%" => '<ins>$1</ins>',
-"%%(?!%)((?:(?!%%).)*)%%" => '<del>$1</del>',
-"'''(?!')((?:(?!''').)*)'''" => '<em>$1</em>',
-"''(?!')((?:(?!'').)*)''" => '<strong>$1</strong>',
-'&amp;br;' => '<br>',
+       'COLOR\(([^\(\)]*)\){([^}]*)}'  => '<font color="$1">$2</font>',
+       'SIZE\(([^\(\)]*)\){([^}]*)}'   => '$2',        // Disabled
+       'COLOR\(([^\(\)]*)\):((?:(?!COLOR\([^\)]+\)\:).)*)'     => '<font color="$1">$2</font>',
+       'SIZE\(([^\(\)]*)\):((?:(?!SIZE\([^\)]+\)\:).)*)'       => '$2', // Disabled
+       '%%%(?!%)((?:(?!%%%).)*)%%%'    => '<ins>$1</ins>',
+       '%%(?!%)((?:(?!%%).)*)%%'       => '<del>$1</del>',
+       "'''(?!')((?:(?!''').)*)'''"    => '<em>$1</em>',
+       "''(?!')((?:(?!'').)*)''"       => '<strong>$1</strong>',
+       '&amp;br;'      => '<br>',
 );
 
+
 /////////////////////////////////////////////////
-// $script¤òû½Ì
-if (preg_match('#([^/]+)$#',$script,$matches)) {
-       $script = $matches[1];
+// ·ÈÂÓÅÅÏäˤ¢¤ï¤»¤¿¥Õ¥§¥¤¥¹¥Þ¡¼¥¯
+
+// $usefacemark = 1¤Ê¤é¥Õ¥§¥¤¥¹¥Þ¡¼¥¯¤¬ÃÖ´¹¤µ¤ì¤Þ¤¹
+// Ê¸¾ÏÆâ¤Ë' XD'¤Ê¤É¤¬¤¢¤Ã¤¿¾ì¹ç¤Ëfacemark¤ËÃÖ´¹¤µ¤ì¤Æ¤·¤Þ¤¦¤¿¤á¡¢
+// É¬ÍפΤʤ¤Êý¤Ï $usefacemark¤ò0¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
+
+// Browser-name only
+$facemark_rules = array();
+switch ($ua_name) {
+
+    // Graphic icons for imode HTML 4.0, with Shift-JIS text output
+    // http://www.nttdocomo.co.jp/mc-user/i/tag/emoji/e1.html
+    // http://www.nttdocomo.co.jp/mc-user/i/tag/emoji/list.html
+    case 'DoCoMo':
+
+       $facemark_rules = array(
+       // Face marks
+       '\s(\:\))'      =>      '&#63893;',     // smile
+       '\s(\:D)'       =>      '&#63893;',     // bigsmile
+       '\s(\:p)'       =>      '&#xE728;',     // huh
+       '\s(\:d)'       =>      '&#xE728;',     // huh
+       '\s(XD)'        =>      '&#63895;',     // oh
+       '\s(X\()'       =>      '&#63895;',     // oh
+       '\s(;\))'       =>      '&#xE729;',     // wink
+       '\s(;\()'       =>      '&#63894;',     // sad
+       '\s(\:\()'      =>      '&#63894;',     // sad
+       '&amp;(smile);' =>      '&#63893;',
+       '&amp;(bigsmile);'=>    '&#63893;',
+       '&amp;(huh);'   =>      '&#xE728;',
+       '&amp;(oh);'    =>      '&#63895;',
+       '&amp;(wink);'  =>      '&#xE729;',
+       '&amp;(sad);'   =>      '&#63894;',
+       '&amp;(heart);' =>      '&#63889;',
+       '&amp;(worried);'=>     '&#xE722;',
+
+       // Face marks, Japanese style
+       '\s(\(\^\^\))'  =>      '&#63893;',     // smile
+       '\s(\(\^-\^)'   =>      '&#63893;',     // smile
+       '\s(\(\.\.;)'   =>      '&#63895;',     // oh
+       '\s(\(\^_-\))'  =>      '&#xE729;',     // wink
+       '\s(\(--;)'     =>      '&#63894;',     // sad
+       '\s(\(\^\^;\))' =>      '&#xE722;',     // worried
+       '\s(\(\^\^;)'   =>      '&#xE722;',     // worried
+
+       // Push buttons, 0-9 and sharp
+       '&amp;(pb1);'   =>      '&#63879;',
+       '&amp;(pb2);'   =>      '&#63880;',
+       '&amp;(pb3);'   =>      '&#63881;',
+       '&amp;(pb4);'   =>      '&#63882;',
+       '&amp;(pb5);'   =>      '&#63883;',
+       '&amp;(pb6);'   =>      '&#63884;',
+       '&amp;(pb7);'   =>      '&#63885;',
+       '&amp;(pb8);'   =>      '&#63886;',
+       '&amp;(pb9);'   =>      '&#63887;',
+       '&amp;(pb0);'   =>      '&#63888;',
+       '&amp;(pb#);'   =>      '&#63877;',
+
+       // Others
+       '&amp;(zzz);'   =>      '&#63910;',
+       '&amp;(man);'   =>      '&#63829;',
+       '&amp;(clock);' =>      '&#63838;',
+       '&amp;(mail);'  =>      '&#63863;',
+       '&amp;(mailto);'=>      '&#63859;',
+       '&amp;(phone);' =>      '&#63720;',
+       '&amp;(phoneto);'=>     '&#63858;',
+       '&amp;(faxto);' =>      '&#63860;',
+       );
+       break;
+
+    // Graphic icons for Vodafone (ex. J-PHONE) cell phones
+    // http://www.dp.j-phone.com/dp/tool_dl/web/picword_top.php
+    case 'J-PHONE':
+
+       $facemark_rules = array(
+       // Face marks
+       '\s(\:\))'      =>      chr(27).'$Gv'.chr(15),  // '&#57430;',  // smile
+       '\s(\:D)'       =>      chr(27).'$Gv'.chr(15),  // '&#57430;',  // bigsmile => smile
+       '\s(\:p)'       =>      chr(27).'$E%'.chr(15),  // '&#57605;',  // huh
+       '\s(\:d)'       =>      chr(27).'$E%'.chr(15),  // '&#57605;',  // huh
+       '\s(XD)'        =>      chr(27).'$Gx'.chr(15),  // '&#57432;',  // oh
+       '\s(X\()'       =>      chr(27).'$Gx'.chr(15),  // '&#57432;',  // oh
+       '\s(;\))'       =>      chr(27).'$E&'.chr(15),  // '&#57606;',  // wink¤¸¤ã¤Ê¤¤¤±¤É¤Í(^^; (¢¨Ìܤ¬¥Ï¡¼¥È)
+       '\s(;\()'       =>      chr(27).'$E&'.chr(15),  // '&#57606;',  // sad
+       '\s(\:\()'      =>      chr(27).'$Gy'.chr(15),  // '&#57433;',  // sad
+       '&amp;(smile);' =>      chr(27).'$Gv'.chr(15),  // '&#57430;',
+       '&amp;(bigsmile);'=>    chr(27).'$Gw'.chr(15),  // '&#57431;',
+       '&amp;(huh);'   =>      chr(27).'$E%'.chr(15),  // '&#57605;',
+       '&amp;(oh);'    =>      chr(27).'$Gx'.chr(15),  // '&#57432;',
+       '&amp;(wink);'  =>      chr(27).'$E&'.chr(15),  // '&#57606;',  // wink¤¸¤ã¤Ê¤¤¤±¤É¤Í(^^; (¢¨Ìܤ¬¥Ï¡¼¥È)
+       '&amp;(sad);'   =>      chr(27).'$Gy'.chr(15),  // '&#57433;',
+       '&amp;(heart);' =>      chr(27).'$GB'.chr(15),  // '&#57378;',
+       '&amp;(worried);'=>     chr(27).'$E('.chr(15),  // '&#57608;',
+
+       // Face marks, Japanese style
+       '\s(\(\^\^\))'  =>      chr(27).'$Gv'.chr(15),  // smile
+       '\s(\(\^-\^)'   =>      chr(27).'$Gv'.chr(15),  // smile
+       '\s(\(\.\.;)'   =>      chr(27).'$Gx'.chr(15),  // oh
+       '\s(\(\^_-\))'  =>      chr(27).'$E&'.chr(15),  // wink¤¸¤ã¤Ê¤¤¤±¤É¤Í(^^; (¢¨Ìܤ¬¥Ï¡¼¥È)
+       '\s(\(--;)'     =>      chr(27).'$E&'.chr(15),  // sad
+       '\s(\(\^\^;\))' =>      chr(27).'$E('.chr(15),  // worried
+       '\s(\(\^\^;)'   =>      chr(27).'$E('.chr(15),  // worried
+
+       // Push buttons, 0-9 and sharp
+       '&amp;(pb1);'   =>      chr(27).'$F<'.chr(15),  // '&#57884;',
+       '&amp;(pb2);'   =>      chr(27).'$F='.chr(15),  // '&#57885;',
+       '&amp;(pb3);'   =>      chr(27).'$F>'.chr(15),  // '&#57886;',
+       '&amp;(pb4);'   =>      chr(27).'$F?'.chr(15),  // '&#57887;',
+       '&amp;(pb5);'   =>      chr(27).'$F@'.chr(15),  // '&#57888;',
+       '&amp;(pb6);'   =>      chr(27).'$FA'.chr(15),  // '&#57889;',
+       '&amp;(pb7);'   =>      chr(27).'$FB'.chr(15),  // '&#57890;',
+       '&amp;(pb8);'   =>      chr(27).'$FC'.chr(15),  // '&#57891;',
+       '&amp;(pb9);'   =>      chr(27).'$FD'.chr(15),  // '&#57892;',
+       '&amp;(pb0);'   =>      chr(27).'$FE'.chr(15),  // '&#57893;',
+
+       // Others
+       '&amp;(zzz);'   =>      chr(27).'$E\\'.chr(15),
+       '&amp;(man);'   =>      chr(27).'$G!'.chr(15),
+       '&amp;(clock);' =>      chr(27).'$GF'.chr(15),  // '&#xE026;',
+       '&amp;(mail);'  =>      chr(27).'$Fv'.chr(15),
+       '&amp;(mailto);'=>      chr(27).'$E#'.chr(15),
+       '&amp;(phone);' =>      chr(27).'$G)'.chr(15),
+       '&amp;(phoneto);'=>     chr(27).'$E$'.chr(15),
+       '&amp;(faxto);' =>      chr(27).'$G+'.chr(15),
+       );
+       break;
+
+    case 'UP.Browser':
+
+       // UP.Browser for KDDI cell phones' built-in icons
+       // http://www.au.kddi.com/ezfactory/tec/spec/3.html
+       if (preg_match('#^KDDI#', $ua_agent)) {
+       $facemark_rules = array(
+       // Face marks
+       '\s(\:\))'      =>      '<img localsrc="68">',  // smile
+       '\s(\:D)'       =>      '<img localsrc="257">', // bigsmile
+       '\s(\:p)'       =>      '<img localsrc="264">', // huh
+       '\s(\:d)'       =>      '<img localsrc="264">', // huh
+       '\s(XD)'        =>      '<img localsrc="260">', // oh
+       '\s(X\()'       =>      '<img localsrc="260">', // oh
+       '\s(;\))'       =>      '<img localsrc="348">', // wink
+       '\s(;\()'       =>      '<img localsrc="259">', // sad
+       '\s(\:\()'      =>      '<img localsrc="259">', // sad
+       '&amp;(smile);' =>      '<img localsrc="68">',
+       '&amp;(bigsmile);'=>    '<img localsrc="257">',
+       '&amp;(huh);'   =>      '<img localsrc="264">',
+       '&amp;(oh);'    =>      '<img localsrc="260">',
+       '&amp;(wink);'  =>      '<img localsrc="348">',
+       '&amp;(sad);'   =>      '<img localsrc="259">',
+       '&amp;(heart);' =>      '<img localsrc="415">',
+       '&amp;(worried);'=>     '<img localsrc="351">',
+
+       // Face marks, Japanese style
+       '\s(\(\^\^\))'  =>      '<img localsrc="68">',  // smile
+       '\s(\(\^-\^)'   =>      '<img localsrc="68">',  // smile
+       '\s(\(\.\.;)'   =>      '<img localsrc="260">', // oh
+       '\s(\(\^_-\))'  =>      '<img localsrc="348">', // wink
+       '\s(\(--;)'     =>      '<img localsrc="259">', // sad
+       '\s(\(\^\^;\))' =>      '<img localsrc="351">', // worried
+       '\s(\(\^\^;)'   =>      '<img localsrc="351">', // worried
+
+       // Push buttons, 0-9 and sharp
+       '&amp;(pb1);'   =>      '<img localsrc="180">',
+       '&amp;(pb2);'   =>      '<img localsrc="181">',
+       '&amp;(pb3);'   =>      '<img localsrc="182">',
+       '&amp;(pb4);'   =>      '<img localsrc="183">',
+       '&amp;(pb5);'   =>      '<img localsrc="184">',
+       '&amp;(pb6);'   =>      '<img localsrc="185">',
+       '&amp;(pb7);'   =>      '<img localsrc="186">',
+       '&amp;(pb8);'   =>      '<img localsrc="187">',
+       '&amp;(pb9);'   =>      '<img localsrc="188">',
+       '&amp;(pb0);'   =>      '<img localsrc="325">',
+       '&amp;(pb#);'   =>      '<img localsrc="818">',
+
+       // Others
+       '&amp;(zzz);'   =>      '<img localsrc="261">',
+       '&amp;(man);'   =>      '<img localsrc="80">',  // Face of male
+       '&amp;(clock);' =>      '<img localsrc="46">',
+       '&amp;(mail);'  =>      '<img localsrc="108">',
+       '&amp;(mailto);'=>      '<img localsrc="784">',
+       '&amp;(phone);' =>      '<img localsrc="85">',
+       '&amp;(phoneto);'=>     '<img localsrc="155">', // An ear receiver
+       '&amp;(faxto);' =>      '<img localsrc="166">', // A FAX
+       );
+       }
+       break;
+
 }
+
+unset($matches, $ua_name, $ua_vers, $ua_agent, $special_rules);
+
 ?>