.





2007/02/08
Ethna¤Ç·ÈÂӤγ¨Ê¸»ú¤ò»È¤¦
¥«¥Æ¥´¥ê : Ethna¥á¥â
¼¹É®¼Ô: itoh (8:16 pm)
Ethna»È¤Ã¤Æ¤Æ¡¢³¨Ê¸»ú»È¤Ã¤Æ¤ß¤Þ¤·¤¿¡£

¤È¤ê¤¢¤¨¤º¡¢³¨Ê¸»úÊÑ´¹¥³¡¼¥É¤Ï
PHP ·ÈÂÓ³¨Ê¸»ú ¼«Æ°ÊÑ´¹¥¹¥¯¥ê¥×¥È
¤µ¤ó¤ò»È¤ï¤»¤Æ¤â¤é¤¤¤Þ¤·¤¿¡£Â¿¼Õ¡£

¤Ç¡¢¤³¤ì¤òEthna¤Ç»È¤¦ÊýË¡¤Ç¤¹¡£

1. Ethna_Filter¤ËOb¥Õ¥£¥ë¥¿¤ò¤«¤Þ¤»¤Æ°ì³çÊÑ´¹

Ethna_Filter¤Ëob¤ò¤«¤Þ¤»¤Æ°ì³çstr_replaceÊÑ´¹¤ò¤«¤±¤Þ¤¹¡£½èÍý¤¬½Å¤¤¤«¤Ê¤È»×¤¤¤Þ¤·¤¿¤¬¡¢°Õ³°¤È¤¤¤¤¤«¤â¡£²¿¤·¤í¥·¥ó¥×¥ë¤Ç¤¹¡£

¤¿¤È¤¨¤Ð¡¢³¨Ê¸»ú¥Ç¥ê¥ß¥¿¤ò[%%]¤È¤·¤Æ[%F997%]¤Ï¤ËÊѤï¤ë¤Ê¤É¡£
¤³¤Î¥Ç¥ê¥ß¥¿¤Ï¤µ¤¹¤¬¤Ë¥Ï¡¼¥É¥³¡¼¥Ç¥£¥ó¥°¤µ¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£

¤³¤Î²¿¤¬¤É¤Î³¨Ì̤«¤È¤¤¤¦¤Î¤Ï¡¢¾åµ­¤Î¥é¥¤¥Ö¥é¥ê¤Ë¥Ð¥ó¥É¥ë¤µ¤ì¤Æ¤¤¤Æ¡¢
http://www.junoe.jp/docs/keitai_emoji/admin.php
¤ß¤¿¤¤¤Ë¤·¤Æ»È¤¨¤Þ¤¹¡£¤¹¤²¡¼ÊØÍø¤Ç¤¹¡£


2. Smarty_Function¤ò»È¤Ã¤Æ¥×¥é¥°¥¤¥ó¤Çµ­½Ò

ºÇ½é¡¢1.¤Ï½Å¤¤¤«¤Ê¤È»×¤¤¡¢¤³¤ì¤Ç¤ä¤Ã¤Æ¤Þ¤·¤¿¤¬¡¦¡¦¡¦

*1. ¥Æ¥ó¥×¥ì¡¼¥È¤òSJIS¤Ç½ñ¤«¤Ê¤¤¤È¤¤¤±¤Ê¤¤
*2. SmartyÊÑ¿ô¤òEthna_ViewClass::forward()¤¹¤ë¤Þ¤¨¤ËSJIS¤ËÊÑ´¹¤·¤Ê¤¤¤È¤¤¤±¤Ê¤¤
*3. ¥Æ¥ó¥×¥ì¡¼¥È¤ËȾ³Ñ¥«¥Ê¤ò»È¤Ã¤Æ½ñ¤«¤Ê¤¤¤È¤¤¤±¤Ê¤¤

¤È¤¤¤¦¤Î¤¬Â­¤«¤»¤Ë¤Ê¤ê¤Þ¤¹¡£ºÇ½é¡¢2.¤Ç¤¤¤­¤Þ¤·¤¿¤¬¡¢·ë¶É1¡¥¤ÇÍî¤ÁÃ夭¤½¤¦¤Ç¤¹¡£



¼ÂºÝ¤Ë¤Ï¡¢²¼µ­¤ÎEthna¥Õ¥£¥ë¥¿¤ò»È¤¤¤Þ¤¹¡£
preFilter¤Ç¡¢GPCÊÑ¿ô¤òSJIS¤«¤éÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ËÊѹ¹¤·¤Þ¤¹¡£
¤½¤Î¤¢¤È¡¢ob_start¤ò¤«¤±¤Þ¤¹¤¬¡¢ob_end_flush¤¹¤ëºÝ¤ËÊÑ´¹¤¹¤ë½çÈ֤Ȥ·¤Æ¤Ï¡¢ºÇ¸å¤Ë³¨Ê¸»úÊÑ´¹¤ò¤«¤±¤ë¤è¤¦¤Ë¤·¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£

²¼µ­¤Î¥³¡¼¥É¤Ë½Ð¤Æ¤¯¤ë
ITT_Util::con_enc¤Ï¼Â¼Ámb_convert_variables¤ÈƱ¤¸¤Ç¤¹¡£
ITT_Util::isMobileAgent¤Ï·ÈÂÓ¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£
<?php
/**
 *	ʸ»ú¥³¡¼¥ÉÊÑ´¹¥Õ¥£¥ë¥¿¤Î¼ÂÁõ
 *  output.handler¤Ë¤ÏÍê¤é¤Ê¤¤;)
 *	@author		{$author}
 *	@access		public
 *	@package	Tinycms
 */
class Showtie_Filter_MobileExchange extends Ethna_Filter
{
	/**#@+
	 *	@access	private
	 */

	/**
	 *	@var	int		³«»Ï»þ´Ö
	 */

	/**#@-*/

	/// ·ÈÂӤξì¹ç¡¢GPC¤ÎSJIS->UTF-8¤Ê¤É
	/**
	 *	¼Â¹ÔÁ°¥Õ¥£¥ë¥¿
	 *   -- POST/GET¤µ¤ì¤ë¤Î¤ÏSJIS¤È·è¤áÉÕ¤±¤Æ¡¢UTF-8¤ËÊÑ´¹¤¹¤ë
	 *
	 *	@access	public
	 */
	function preFilter()
	{
		
		if (ITT_Util::isMobileAgent()){
			$to_enc = mb_internal_encoding();
			$_POST = ITT_Util::con_enc($_POST, $to_enc, 'SJIS');
			$_GET = ITT_Util::con_enc($_GET, $to_enc, 'SJIS');
			$_COOKIE = ITT_Util::con_enc($_COOKIE, $to_enc, 'SJIS');
			ob_start(array($this, '_outputMobileConverFilter'));
		}
	}

	/**
	 *	¼Â¹Ô¸å¥Õ¥£¥ë¥¿
	 * 
	 *	@access	public
	 */
	function postFilter()
	{
		if (ITT_Util::isMobileAgent()){	
			ob_end_flush();
		}
	}
	
	
	/** 
	 * @brief ·ÈÂÓÍÑob¥Õ¥£¥ë¥¿¡¼
	 *
	 * @access protected
	 * @param $buffer string ÊÑ´¹Á°Ê¸»úÎó
	 * @return $buffer string ÊÑ´¹¸åʸ»úÎó
	 */
	function _outputMobileConverFilter($buffer)
	{
		// image_extention
//		$mobile_extention = ITT_Util::getMobileImageExtention();
		$mobile_extention = 'jpg';
		$buffer = str_replace('<iext>', $mobile_extention, $buffer);
		
		// ¥«¥ÊÊÑ´¹ => view::forward()
		$buffer = mb_convert_kana($buffer, 'ka', 'UTF-8');
		
		// encoding¤ÏºÇ¸å
		$internal = @mb_internal_encoding();
		$output = 'SJIS';
		// ʸ»ú¥³¡¼¥ÉÊÑ´¹
		$buffer = mb_convert_encoding($buffer , $output, $internal );
		
		// ³¨Ê¸»úÊÑ´¹¤Ï¥Ð¥¤¥Ê¥ê¤ò°·¤¦¤Î¤ÇºÇ¸å
		$buffer = $this->_emojiConverFilter($buffer);
		
		// Contents-Length header
		header('Content-Type: text/html; charset=Shift_JIS');
		header('Content-Length: '.strlen($buffer));
		
		return $buffer ;
	}
	
	
	/** 
	 * @brief ·ÈÂÓ³¨Ê¸»úÊÑ´¹
	 *
	 * @access protected
	 * @param $buffer string ÊÑ´¹Á°Ê¸»úÎó
	 * @return $buffer string ÊÑ´¹¸åʸ»úÎó
	 */
	function _emojiConverFilter($buffer)
	{
		require_once 'emoji/MobileClass.php';
		$mc =& new MobileClass();
		
		$before_str = array();
		$after_str  = array();
		foreach ($mc->EMOJI as $code=>$conv_array){
			$before_str[] = '[%'.$code.'%]';
			$after_str[]  = $mc->Convert($code);
		}
		
		return str_replace($before_str, $after_str, $buffer);
	}
}
?>





¤Á¤Ê¤ß¤Ë¡¢2¤ÎÊýË¡¤ÇSmarty¥×¥é¥°¥¤¥ó¤òºî¤ë¤È
<?php
/**
 *	smarty function : emoji
 *
 *  ·ÈÂÓ³¨Ê¸»ú¤ò¤½¤ì¤¾¤ì¤Î¥­¥ã¥ê¥¢Ê̤Ëɽ¼¨
 *   (Showtie_Filter_MobileExchange::_emojiConverFilter()¤ò»È¤¦¤«¤ÎÆóÂò)
 *
 *	sample:
 *	<code>
 *	{emoji code="F9A3"}
 *	</code>
 *  
 *  @deprciate

 *	@param	string	Ethna_ActionName
 *	@return	string	HTML
 */
require_once 'emoji/MobileClass.php';
function smarty_function_emoji($params, &$smarty)
{
	static $mc;
	
	extract($params); // ex: get $name = 'namae';
	
	if (!isset($code)) return '' ;
	
	if (!isset($mc)){
		$mc =& new MobileClass();
	}
	
	return $mc->Convert($code);
}
?>

¤Ç¤¹¤¬¡¢¤½¤Î¸å¤Î½èÍý¤¬°Õ³°¤ÈÌÌÅݤʤΤǥª¥¹¥¹¥á¤Ç¤Ï¤Ê¤¤¤Ç¤¹¡£
itoh¤µ¤ó¤Î¥Ö¥í¥°¤òÆÉ¤à | ¥³¥á¥ó¥È (24) | ¥È¥é¥Ã¥¯¥Ð¥Ã¥¯¿ô (0) | ±ÜÍ÷¿ô (13278)
¥È¥é¥Ã¥¯¥Ð¥Ã¥¯URL


 





¥á¥¤¥ó¥á¥Ë¥å¡¼

Google Adsense

XoopsCube Ring
Amethyst Blue - BULLETIN


¥«¥Æ¥´¥ê°ìÍ÷
¤¦¤§¥Ö¥í¥° ¥«¥ì¥ó¥À¡¼


.