diary : Hisato's twits ...

機種依存文字の置き換え。

sjisでの置き換え。
大分逃げた仕上がり。
知らないもん、、、。

/**
 * 機種依存文字置換
 * 
 * @access public
 * @param string	$str		対象文字列
 * @param string	$chg_str	置換文字列
 * @return string	置換結果
 */
function replaceText($str,$chg_str=NULL){
	$flag = false;
	$rtn = false;
	$str2 = NULL;

    // 13区 0x8740~0x879F
	// NEC-IBM拡張 0xED40~0xEEFC
	// IBM拡張 0xFA40~0xFC4B
	// 外字 0xF040~F9FC
	// Mac機種依存文字 0x8540~0x889E
	// Mac外字および縦組用 0xEAA5~0xFCFC
	$pattern = "/(?:[\x87][\x40-\x9F]|[\xED-\xEE][\x40-\xFF]|[\xFA-\xFB][\x40-\xFF]|[\xFC][\x40-\x4B]|[\xF0-\xF9][\x40-\xFF]|[\x85-\x88][\x40-\x9E]|[\xEA-\xFC][\xA5-\xFC])/";

	for($cnt1=0; $cnt1<mb_strlen($str); $cnt1++){
		$bit = mb_substr($str,$cnt1,1);
		if(preg_match($pattern,$bit,$matches,PREG_OFFSET_CAPTURE)) $flag = true;
		$bit = preg_replace($pattern,$chg_str,$bit);
		$str2 .= $bit;
	}

	if($flag) $rtn = $str2;
	return $rtn;
}

About Archive

Categories:

Recent Posts:

Tag Cloud:

Meta: