アド企画 制作部
アド企画 制作部
 

PHPで [ひらがな・カタカナ]と[ローマ字]を相互に変換したかったので作成しました

PHPで [ひらがな・カタカナ]と[ローマ字]を相互に変換したかったので作成しました

人名や地名など(ふりがな・フリガナ・フリガナ)を大量にローマ字変換する必要がでてきた。

「そんな便利なAPIないかなー」…とネットでいろいろ探していたところ、コレといったものが見つからない。

「Microsoftの翻訳APIがステキ」という記事を目にした。
「どこかで試せないかなぁ。あ、bingの翻訳って似たような結果でるかなぁ?」
と何も考えずに試してみた結果、「きとう(鬼頭)」さんが「うちだ(内田)」さんに変換された…???

「きとう(鬼頭)」さんが「うちだ(内田)」さんに変換された…????

人名を翻訳ソフトにかけるのは間違っている。そりゃそうだ。

ダメだこりゃ、わっかんないや…ってことで、PHPでひらがな・カタカナ・半角カタカナをローマ字変換するものを(カシオのワープロの文字入力一覧表とにらめっこしながら)自作した。


改善の余地はあると思うが、とりあえずコレでできたので。

PHPローマ字変換:できること

PHPでひらがな・カタカナ・半角カタカナの混合文字列を、ローマ字に変換

※ 翻訳でない!

PHPローマ字変換:仕様など

・ パソコンやワープロの文字入力時に使用するローマ字入力を基準にしたつもり。

・ 「っ」にも(私好みに)ある程度対応。

・ 漢字とかはさわらない。

・ とりあえず UTF-8 で動く。

・ 記号の既定値が雑。

・ 需要があるかどうかは謎。

・ あまり詳細にはテストしてません。

・ こっそりローマ字をカタカナに変換するものも潜ませてある(精度は低いです)。

PHPローマ字変換:使い方

先にローマ字変換使い方を紹介します。
コードは長いので最後に。


<?php

// 適当に保存したファイルを読み込み
include_once('kanaClass.php')

// オブジェクト作成
$obj = new kanaClass();

// 変換する文字列を準備
$str = <<<EOD
この 文字列を 変換するよ
じょうずに できるかしら?
ジョウズニ デキタカシラ?
ツッテけテッテッッてー
<<<EOD;


// ローマ字に変換
$str = $obj->to_romaji($str);
echo $str;

/* 出力サンプル
kono 文字列wo 変換suruyo
jouzuni dekirukashira?
jouzuni dekitakashira?
tsutteketettettteー
*/


// ローマ字をカタカナに変換
$str = $obj->to_kana($str);
echo $str;

/* 出力サンプル
コノ 文字列ヲ 変換スルヨ
ジョウズニ デキルカシラ?
ジョウズニ デキタカシラ?
ツッテケテッテッッテー
*/

PHPローマ字変換:ソース(kanaClass.php)

長いよ。スクロールしてみてね。


<?php

class kanaClass{
	var $charset   = 'UTF-8';
	
	function __construct($charset = 'UTF-8'){
		$this->charset  = $charset;
	}

	
// ローマ字に変換
	function to_romaji($str){
		if(@strlen($str)){
			// 半角カタカナ・全角カタカナ・を全角ひらがなに変換
			// 全角スペースを半角スペースに変換
			// 全角英数を半角英数に変換
			$str = mb_convert_kana($str, "asc", $this->charset);
			$romaji = $this->get_charlist_default();
			$num_arr = array();
			foreach(array_keys($romaji) as $i){
				$num_arr[] = $romaji[$i][4];
			}
			$num_arr = array_unique($num_arr);
			sort($num_arr);
			foreach($num_arr as $num){
				$be = array();
				$af = array();
				foreach($romaji as $x){
					if($x[4] == $num && $x[0] != 'っ'){ //一旦「っ」を除外
						$be[] = '/' . preg_quote($x[0],'/') . '/';
						$af[] = $x[3];
					}
				}
				if(!empty($be)){
					$str = preg_replace($be, $af, $str, -1);
				}
			}
			//「っ」の処理
			if(preg_match_all('/([っ]+)([a-z])/',$str,$matches)){
				$keys = array();
				$sort_arr = array();
				foreach(array_keys($matches[0]) as $i){ // 重複を除外
					if(array_search($matches[0][$i], $keys) === false){
						$keys[$i]["k"] = $i;
						$keys[$i]["v"] = $matches[0][$i];
						$sort_arr[$i]  = strlen($matches[0][$i]);
					}
				}
				array_multisort($sort_arr, SORT_DESC, $keys); //文字数の多い順でソート
				foreach(array_keys($keys) as $i){
					$i = $keys[$i]["k"];
					$tmp = "";
					for($j=0; $j < mb_strlen($matches[1][$i],$this->charset); $j++){
						$tmp .= $matches[2][$i];
					}
					$tmp .= $matches[2][$i];
					$str = preg_replace('/'.$matches[0][$i].'/', $tmp, $str, -1);
				}
			}
			//処理から漏れた「っ」を変換
			$str = preg_replace('/っ/', 'xtu', $str, -1);
		}
		$str = $this->kigou_to_hankaku($str);
		return $str;
	}
	
// ローマ字をひらがなに変換
	function to_kana($str){
		if(@strlen($str)){
			// 全角英字を半角英字に変換
			$str = mb_convert_kana($str, "r", $this->charset);
			//$str = strtolower($str); //大文字を小文字に変換
			//「っ」の処理(母音以外の繰り返し)
			if(preg_match_all('/([bdfghjklmnpqrstvwxyz])\1+/i', $str, $matches)){
				$keys = array();
				$sort_arr = array();
				foreach(array_keys($matches[0]) as $i){ // 重複を除外
					if(array_search($matches[0][$i], $keys) === false){
						$keys[$i]["k"] = $i;
						$keys[$i]["v"] = $matches[0][$i];
						$sort_arr[$i]  = strlen($matches[0][$i]);
					}
				}
				array_multisort($sort_arr, SORT_DESC, $keys); //文字数の多い順でソート
				foreach(array_keys($keys) as $i){
					$i = $keys[$i]["k"];
					$tmp = "";
					if(strlen($matches[0][$i]) == 1){
						$tmp .= "ッ";
					}else{
						for($j = 1; $j < strlen($matches[0][$i]); $j++){
							$tmp .= "ッ";
						}
					}
					$tmp .= $matches[1][$i];
					$str = preg_replace('/'.$matches[0][$i].'/', $tmp, $str, -1);
				}
			}
			$romaji = $this->get_charlist_default();
			//ローマ字→かな用 変換順序 再設定(ゃゅょっつ優先)
			$romaji[] = array('っ', 'ッ' , 'ッ', "xtu", 0);
			$romaji[] = array('っ', 'ッ' , 'ッ', "ltu", 0);
			for($i=0; $i < count($romaji); $i++){
				$romaji[$i][4] = $romaji[$i][4] + 1;
				if(preg_match('/(ゃ|ゅ|ょ|っ|つ)/', $romaji[$i][0]) && $romaji[$i][3] != 'tu'){
					$romaji[$i][4] = 0;
				}
/*
				if($romaji[$i][4] > 0){
					foreach($romaji as $x){
						if($x[4] == 0 && preg_match('/'.$x[3].'/', $romaji[$i][3])){
							$romaji[$i][5] = 0;
							break;
						}
					}
				}
*/
			}
			$num_arr = array();
			foreach(array_keys($romaji) as $i){
				$num_arr[] = $romaji[$i][4];
			}
			$num_arr = array_unique($num_arr);
			sort($num_arr);
			foreach($num_arr as $num){
				$be = array();
				$af = array();
				foreach($romaji as $x){
					if($x[4] == $num){
						$be[] = '/' . preg_quote($x[3],'/') . '/';
						$af[] = $x[1]; //ローマ字をカタカナに
					}
				}
				if(!empty($be)){
					$str = preg_replace($be, $af, $str, -1);
				}
			}
		}
		return $str;
	}
	
	//全角文字列を半角文字列に変換
	function to_hankaku($str){
		if(@strlen($str)){
			$str = mb_convert_kana($str,"khc",$this->charset);
			$str = $this->kigou_to_hankaku($str);
		}
		return $str;
	}

	//半角記号を全角記号に変換
	function to_zenkaku($str){
		if(@strlen($str)){
			$str = mb_convert_kana($str,"KV",$this->charset);
			$str = $this->kigou_to_zenkaku($str);
		}
		return $str;
	}

	//全角記号を半角記号に変換
	function kigou_to_hankaku($str){
		if(@strlen($str)){
			$str = mb_convert_kana($str,"as",$this->charset);
			$kigou = $this->get_kigoulist_default();
			$zen = array();
			$han = array();
			foreach(array_keys($kigou) as $i){
				if(@strlen($kigou[$i]["zen"])){
					$zen[] = '/'.preg_quote($kigou[$i]["zen"],'/').'/';
					$han[] = $kigou[$i]["han"];
				}
			}
			$str = preg_replace($zen, $han, $str, -1);
		}
		return $str;
	}

	//半角記号を全角記号に変換
	function kigou_to_zenkaku($str){
		if(@strlen($str)){
			$str = mb_convert_kana($str,"AS",$this->charset);
			$kigou = $this->get_kigoulist_default();
			$zen = array();
			$han = array();
			foreach(array_keys($kigou) as $i){
				if(@strlen($kigou[$i]["han"])){
					$zen[] = '/'.preg_quote($kigou[$i]["han"],'/').'/';
					$han[] = $kigou[$i]["zen"];
				}
			}
			$str = preg_replace($zen, $han, $str, -1);
		}
		return $str;
	}

	function get_charlist_default(){
		$charlist = array();
		
		$charlist[] = array('あ', 'ア' , 'ア', "a", 3);
		$charlist[] = array('い', 'イ' , 'イ', "i", 3);
		$charlist[] = array('う', 'ウ' , 'ウ', "u", 3);
		$charlist[] = array('え', 'エ' , 'エ', "e", 3);
		$charlist[] = array('お', 'オ' , 'オ', "o", 3);
	
		$charlist[] = array('ヴぁ', 'ヴァ' , 'ヴァ', "va", 1);
		$charlist[] = array('ヴぃ', 'ヴィ' , 'ヴィ', "vi", 1);
		$charlist[] = array('ヴぃ', 'ヴィ' , 'ヴィ゙', "vyi", 1);
		$charlist[] = array('ヴ', 'ヴ' , 'ヴ', "vu", 1);
		$charlist[] = array('ヴぇ', 'ヴェ' , 'ヴェ', "ve", 1);
		$charlist[] = array('ヴぇ', 'ヴェ' , 'ヴェ', "vye", 1);
		$charlist[] = array('ヴぉ', 'ヴォ' , 'ヴォ', "vyo", 1);
	
		$charlist[] = array('ヴゃ', 'ヴャ' , 'ヴャ', "vya", 1);
		$charlist[] = array('ヴゅ', 'ヴュ' , 'ヴュ', "vyu", 1);
		$charlist[] = array('ヴょ', 'ヴョ' , 'ヴョ', "vyo", 1);
		
		$charlist[] = array('か', 'カ' , 'カ', "ka", 2);
		$charlist[] = array('か', 'カ' , 'カ', "ca", 2);
		$charlist[] = array('き', 'キ' , 'キ', "ki", 2);
		$charlist[] = array('く', 'ク' , 'ク', "ku", 2);
		$charlist[] = array('く', 'ク' , 'ク', "qu", 2);
		$charlist[] = array('け', 'ケ' , 'ケ', "ke", 2);
		$charlist[] = array('こ', 'コ' , 'コ', "ko", 2);
		$charlist[] = array('こ', 'コ' , 'コ', "co", 2);
	
		$charlist[] = array('が', 'ガ' , 'ガ', "ga", 2);
		$charlist[] = array('ぎ', 'ギ' , 'ギ', "gi", 2);
		$charlist[] = array('ぐ', 'グ' , 'グ', "gu", 2);
		$charlist[] = array('げ', 'ゲ' , 'ゲ', "ge", 2);
		$charlist[] = array('ご', 'ゴ' , 'ゴ', "go", 2);
	
		$charlist[] = array('きゃ', 'キャ' , 'キャ', "kya", 1);
		$charlist[] = array('きぃ', 'キィ' , 'キィ', "kyi", 1);
		$charlist[] = array('きゅ', 'キュ' , 'キュ', "kyu", 1);
		$charlist[] = array('きぇ', 'キェ' , 'キェ', "kye", 1);
		$charlist[] = array('きょ', 'キョ' , 'キョ', "kyo", 1);
	
		$charlist[] = array('ぎゃ', 'ギャ' , 'ギャ', "gya", 1);
		$charlist[] = array('ぎぃ', 'ギィ' , 'ギィ', "gyi", 1);
		$charlist[] = array('ぎゅ', 'ギュ' , 'ギュ', "gyu", 1);
		$charlist[] = array('ぎぇ', 'ギェ' , 'ギェ', "gye", 1);
		$charlist[] = array('ぎょ', 'ギョ' , 'ギョ', "gyo", 1);
	
		$charlist[] = array('くぁ', 'クァ' , 'クァ', "qa", 1);
		$charlist[] = array('くぁ', 'クァ' , 'クァ', "kwa", 1);
		$charlist[] = array('くぃ', 'クィ' , 'クィ', "qi", 1);
		$charlist[] = array('くぃ', 'クィ' , 'クィ', "qwi", 1);
		$charlist[] = array('くぃ', 'クィ' , 'クィ', "kwi", 1);
		$charlist[] = array('くぅ', 'クゥ' , 'クゥ', "kwu", 1);
		$charlist[] = array('くぇ', 'クェ' , 'クェ', "qe", 1);
		$charlist[] = array('くぇ', 'クェ' , 'クェ', "qwe", 1);
		$charlist[] = array('くぉ', 'クォ' , 'クォ', "qo", 1);
		$charlist[] = array('くぉ', 'クォ' , 'クォ', "kwo", 1);
	
		$charlist[] = array('くゎ', 'クヮ' , 'クァ', "qwa", 1); // ァ?
		$charlist[] = array('くゎ', 'クヮ' , 'クァ', "kwa", 1); // ァ?
	
		$charlist[] = array('ぐゎ', 'グヮ' , 'グァ', "gwa", 1); // ァ?
		$charlist[] = array('ぐぃ', 'グィ' , 'グィ', "gwi", 1);
		$charlist[] = array('ぐぅ', 'グゥ' , 'グゥ', "gwu", 1);
		$charlist[] = array('ぐぇ', 'グェ' , 'グェ', "gwe", 1);
		$charlist[] = array('ぐぉ', 'グォ' , 'グォ', "gwo", 1);
	
		$charlist[] = array('さ', 'サ' , 'サ', "sa", 2);
		$charlist[] = array('し', 'シ' , 'シ', "shi", 2);
		$charlist[] = array('し', 'シ' , 'シ', "si", 2);
		$charlist[] = array('す', 'ス' , 'ス', "su", 2);
		$charlist[] = array('せ', 'セ' , 'セ', "se", 2);
		$charlist[] = array('そ', 'ソ' , 'ソ', "so", 2);
	
		$charlist[] = array('しゃ', 'シャ' , 'シャ', "sha", 1);
		$charlist[] = array('しゃ', 'シャ' , 'シャ', "sya", 1);
		$charlist[] = array('しゅ', 'シュ' , 'シュ', "shu", 1);
		$charlist[] = array('しゅ', 'シュ' , 'シュ', "syu", 1);
		$charlist[] = array('しぇ', 'シェ' , 'シェ', "she", 1);
		$charlist[] = array('しぇ', 'シェ' , 'シェ', "sye", 1);
		$charlist[] = array('しょ', 'ショ' , 'ショ', "sho", 1);
		$charlist[] = array('しょ', 'ショ' , 'ショ', "syo", 1);
	
		$charlist[] = array('ざ', 'ザ' , 'ザ', "za", 2);
		$charlist[] = array('じ', 'ジ' , 'ジ', "zi", 2);
		$charlist[] = array('じ', 'ジ' , 'ジ', "ji", 2);
		$charlist[] = array('ず', 'ズ' , 'ズ', "zu", 2);
		$charlist[] = array('ぜ', 'ゼ' , 'ゼ', "ze", 2);
		$charlist[] = array('ぞ', 'ゾ' , 'ゾ', "zo", 2);
	
		$charlist[] = array('じゃ', 'ジャ' , 'ジャ', "ja", 1);
		$charlist[] = array('じゃ', 'ジャ' , 'ジャ', "zya", 1);
		$charlist[] = array('じゃ', 'ジャ' , 'ジャ', "jya", 1);
		$charlist[] = array('じぃ', 'ジィ' , 'ジィ', "zyi", 1);
		$charlist[] = array('じぃ', 'ジィ' , 'ジィ', "jyi", 1);
		$charlist[] = array('じゅ', 'ジュ' , 'ジュ', "ju", 1);
		$charlist[] = array('じゅ', 'ジュ' , 'ジュ', "zyu", 1);
		$charlist[] = array('じゅ', 'ジュ' , 'ジュ', "jyu", 1);
		$charlist[] = array('じぇ', 'ジェ' , 'ジェ', "je", 1);
		$charlist[] = array('じぇ', 'ジェ' , 'ジェ', "zye", 1);
		$charlist[] = array('じぇ', 'ジェ' , 'ジェ', "jye", 1);
		$charlist[] = array('じょ', 'ジョ' , 'ジョ', "jo", 1);
		$charlist[] = array('じょ', 'ジョ' , 'ジョ', "zyo", 1);
		$charlist[] = array('じょ', 'ジョ' , 'ジョ', "jyo", 1);
	
		$charlist[] = array('た', 'タ' , 'タ', "ta", 2);
		$charlist[] = array('ち', 'チ' , 'チ', "chi", 2);
		$charlist[] = array('ち', 'チ' , 'チ', "ti", 2);
		$charlist[] = array('つ', 'ツ' , 'ツ', "tsu", 2);
		$charlist[] = array('つ', 'ツ' , 'ツ', "tu", 2);
		$charlist[] = array('て', 'テ' , 'テ', "te", 2);
		$charlist[] = array('と', 'ト' , 'ト', "to", 2);
	
		$charlist[] = array('ちゃ', 'チャ' , 'チャ', "cha", 1);
		$charlist[] = array('ちゃ', 'チャ' , 'チャ', "tya", 1);
		$charlist[] = array('ちゃ', 'チャ' , 'チャ', "cya", 1);
		$charlist[] = array('ちぃ', 'チィ' , 'チィ', "tyi", 1);
		$charlist[] = array('ちぃ', 'チィ' , 'チィ', "cyi", 1);
		$charlist[] = array('ちゅ', 'チュ' , 'チュ', "chu", 1);
		$charlist[] = array('ちゅ', 'チュ' , 'チュ', "tyu", 1);
		$charlist[] = array('ちゅ', 'チュ' , 'チュ', "cyu", 1);
		$charlist[] = array('ちぇ', 'チェ' , 'チェ', "che", 1);
		$charlist[] = array('ちぇ', 'チェ' , 'チェ', "tye", 1);
		$charlist[] = array('ちぇ', 'チェ' , 'チェ', "cye", 1);
		$charlist[] = array('ちょ', 'チョ' , 'チョ', "cho", 1);
		$charlist[] = array('ちょ', 'チョ' , 'チョ', "tyo", 1);
		$charlist[] = array('ちょ', 'チョ' , 'チョ', "cyo", 1);
	
		$charlist[] = array('つぁ', 'ツァ' , 'ツァ', "tsa", 1);
		$charlist[] = array('つぃ', 'ツィ' , 'ツィ', "tsi", 1);
		$charlist[] = array('つぇ', 'ツェ' , 'ツェ', "tse", 1);
		$charlist[] = array('つぉ', 'ツォ' , 'ツォ', "tso", 1);
	
		$charlist[] = array('てゃ', 'テャ' , 'テャ', "tha", 1);
		$charlist[] = array('てぃ', 'ティ' , 'ティ', "thi", 1);
		$charlist[] = array('てゅ', 'テュ' , 'テュ', "thu", 1);
		$charlist[] = array('てぇ', 'テェ' , 'テェ', "the", 1);
		$charlist[] = array('てょ', 'テョ' , 'テョ', "tho", 1);
	
		$charlist[] = array('とぉ', 'トォ' , 'トォ', "two", 1);
		$charlist[] = array('どぉ', 'ドォ' , 'ドォ', "dwo", 1);
	
		$charlist[] = array('だ', 'タ' , 'タ', "da", 2);
		$charlist[] = array('ぢ', 'チ' , 'チ', "di", 2);
		$charlist[] = array('づ', 'ヅ' , 'チ', "zu", 2);
		$charlist[] = array('づ', 'ヅ' , 'チ', "du", 2);
		$charlist[] = array('で', 'デ' , 'ツ', "de", 2);
		$charlist[] = array('ど', 'ド' , 'テ', "do", 2);
	
		$charlist[] = array('ぢゃ', 'ヂャ' , 'ヂャ', "dya", 1);
		$charlist[] = array('ぢぃ', 'ヂィ' , 'ヂィ', "dyi", 1);
		$charlist[] = array('ぢゅ', 'ヂュ' , 'ヂュ', "dyu", 1);
		$charlist[] = array('ぢぇ', 'ヂェ' , 'ヂェ', "dye", 1);
		$charlist[] = array('ぢょ', 'ヂョ' , 'ヂョ', "dyo", 1);
	
		$charlist[] = array('でゃ', 'デャ' , 'デャ', "dha", 1);
		$charlist[] = array('でぃ', 'ディ' , 'ディ', "dhi", 1);
		$charlist[] = array('でゅ', 'デュ' , 'デュ', "dhu", 1);
		$charlist[] = array('でぇ', 'デェ' , 'デェ', "dhe", 1);
		$charlist[] = array('でょ', 'デョ' , 'デョ', "dho", 1);
	
		$charlist[] = array('な', 'ナ' , 'ナ', "na", 2);
		$charlist[] = array('に', 'ニ' , 'ニ', "ni", 2);
		$charlist[] = array('ぬ', 'ヌ' , 'ヌ', "nu", 2);
		$charlist[] = array('ね', 'ネ' , 'ネ', "ne", 2);
		$charlist[] = array('の', 'ノ' , 'ノ', "no", 2);
	
		$charlist[] = array('にゃ', 'ニャ' , 'ニャ', "nya", 1);
		$charlist[] = array('にぃ', 'ニィ' , 'ニィ', "nyi", 1);
		$charlist[] = array('にゅ', 'ニュ' , 'ニュ', "nyu", 1);
		$charlist[] = array('にぇ', 'ニェ' , 'ニェ', "nye", 1);
		$charlist[] = array('にょ', 'ニョ' , 'ニョ', "nyo", 1);
	
		$charlist[] = array('は', 'ハ' , 'ハ', "ha", 2);
		$charlist[] = array('ひ', 'ヒ' , 'ヒ', "hi", 2);
		$charlist[] = array('ふ', 'フ' , 'フ', "fu", 2);
		$charlist[] = array('ふ', 'フ' , 'フ', "hu", 2);
		$charlist[] = array('へ', 'ヘ' , 'ヘ', "he", 2);
		$charlist[] = array('ほ', 'ホ' , 'ホ', "ho", 2);
	
		$charlist[] = array('ひゃ', 'ヒャ' , 'ヒャ', "hya", 1);
		$charlist[] = array('ひぃ', 'ヒィ' , 'ヒィ', "hyi", 1);
		$charlist[] = array('ひゅ', 'ヒュ' , 'ヒュ', "hyu", 1);
		$charlist[] = array('ひぇ', 'ヒェ' , 'ヒェ', "hye", 1);
		$charlist[] = array('ひょ', 'ヒョ' , 'ヒョ', "hyo", 1);
	
		$charlist[] = array('ふぁ', 'ファ' , 'ファ', "fa", 1);
		$charlist[] = array('ふぃ', 'フィ' , 'フィ', "fi", 1);
		$charlist[] = array('ふぃ', 'フィ' , 'フィ', "fyi", 1);
		$charlist[] = array('ふぇ', 'フェ' , 'フェ', "fe", 1);
		$charlist[] = array('ふぇ', 'フェ' , 'フェ', "fye", 1);
		$charlist[] = array('ふぉ', 'フォ' , 'フォ', "fo", 1);
	
		$charlist[] = array('ふゃ', 'フャ' , 'フャ', "fya", 1);
		$charlist[] = array('ふゅ', 'フュ' , 'フュ', "fyu", 1);
		$charlist[] = array('ふょ', 'フョ' , 'フョ', "fyo", 1);
	
		$charlist[] = array('ば', 'バ' , 'バ', "ba", 2);
		$charlist[] = array('び', 'ビ' , 'ビ', "bi", 2);
		$charlist[] = array('ぶ', 'ブ' , 'ブ', "bu", 2);
		$charlist[] = array('べ', 'ベ' , 'ベ', "be", 2);
		$charlist[] = array('ぼ', 'ボ' , 'ボ', "bo", 2);
	
		$charlist[] = array('びゃ', 'ビャ' , 'ビャ', "bya", 1);
		$charlist[] = array('びぃ', 'ビィ' , 'ビィ', "byi", 1);
		$charlist[] = array('びゅ', 'ビュ' , 'ビュ', "byu", 1);
		$charlist[] = array('びぇ', 'ビェ' , 'ビェ', "bye", 1);
		$charlist[] = array('びょ', 'ビョ' , 'ビョ', "byo", 1);
	
		$charlist[] = array('ぶゃ', 'ブャ' , 'ブャ', "vya", 1);
		$charlist[] = array('ぶぃ', 'ブィ' , 'ブィ', "vyi", 1);
		$charlist[] = array('ぶゅ', 'ブュ' , 'ブュ', "vyu", 1);
		$charlist[] = array('ぶぇ', 'ブェ' , 'ブェ', "vye", 1);
		$charlist[] = array('ぶょ', 'ブョ' , 'ブョ', "vyo", 1);
	
		$charlist[] = array('ぱ', 'パ' , 'パ', "pa", 2);
		$charlist[] = array('ぴ', 'ピ' , 'ピ', "pi", 2);
		$charlist[] = array('ぷ', 'プ' , 'プ', "pu", 2);
		$charlist[] = array('ぺ', 'ペ' , 'ペ', "pe", 2);
		$charlist[] = array('ぽ', 'ポ' , 'ポ', "po", 2);
	
		$charlist[] = array('ぴゃ', 'ピャ' , 'ピャ', "pya", 1);
		$charlist[] = array('ぴぃ', 'ピィ' , 'ピィ', "pyi", 1);
		$charlist[] = array('ぴゅ', 'ピュ' , 'ピュ', "pyu", 1);
		$charlist[] = array('ぴぇ', 'ピェ' , 'ピェ', "pye", 1);
		$charlist[] = array('ぴょ', 'ピョ' , 'ピョ', "pyo", 1);
	
		$charlist[] = array('ま', 'マ' , 'マ', "ma", 2);
		$charlist[] = array('み', 'ミ' , 'ミ', "mi", 2);
		$charlist[] = array('む', 'ム' , 'ム', "mu", 2);
		$charlist[] = array('め', 'メ' , 'メ', "me", 2);
		$charlist[] = array('も', 'モ' , 'モ', "mo", 2);
	
		$charlist[] = array('みゃ', 'ミャ' , 'ミャ', "mya", 1);
		$charlist[] = array('みぃ', 'ミィ' , 'ミィ', "myi", 1);
		$charlist[] = array('みゅ', 'ミュ' , 'ミュ', "myu", 1);
		$charlist[] = array('みぇ', 'ミェ' , 'ミェ', "mye", 1);
		$charlist[] = array('みょ', 'ミョ' , 'ミョ', "myo", 1);
		
		$charlist[] = array('や', 'ヤ' , 'ヤ', "ya", 2);
		$charlist[] = array('ゆ', 'ユ' , 'ユ', "yu", 2);
		$charlist[] = array('よ', 'ヨ' , 'ヨ', "yo", 2);
	
		$charlist[] = array('ら', 'ラ' , 'ラ', "ra", 2);
		$charlist[] = array('り', 'リ' , 'リ', "ri", 2);
		$charlist[] = array('る', 'ル' , 'ル', "ru", 2);
		$charlist[] = array('れ', 'レ' , 'レ', "re", 2);
		$charlist[] = array('ろ', 'ロ' , 'ロ', "ro", 2);
	
		$charlist[] = array('ら', 'ラ' , 'ラ', "la", 2);
		$charlist[] = array('り', 'リ' , 'リ', "li", 2);
		$charlist[] = array('る', 'ル' , 'ル', "lu", 2);
		$charlist[] = array('れ', 'レ' , 'レ', "le", 2);
		$charlist[] = array('ろ', 'ロ' , 'ロ', "lo", 2);
	
		$charlist[] = array('りゃ', 'リャ' , 'リャ', "rya", 1);
		$charlist[] = array('りぃ', 'リィ' , 'リィ', "ryi", 1);
		$charlist[] = array('りゅ', 'リュ' , 'リュ', "ryu", 1);
		$charlist[] = array('りぇ', 'リェ' , 'リェ', "rye", 1);
		$charlist[] = array('りょ', 'リョ' , 'リョ', "ryo", 1);
	
		$charlist[] = array('わ', 'ワ' , 'ワ', "wa", 2);
		$charlist[] = array('を', 'ヲ' , 'ヲ', "wo", 2);
		$charlist[] = array('ん', 'ン' , 'ン', "nn", 2);
	
		$charlist[] = array('いぇ', 'イェ' , 'イェ', "ye", 2);
		$charlist[] = array('ゐ', 'イ' , 'イ', "i", 2);
		$charlist[] = array('ゑ', 'エ' , 'エ', "e", 2);
	
		$charlist[] = array('ん', 'ン' , 'ン', "n", 3);
	
		$charlist[] = array('ぁ', 'ァ' , 'ァ', "xa", 3);
		$charlist[] = array('ぁ', 'ァ' , 'ァ', "la", 3);
		$charlist[] = array('ぃ', 'ィ' , 'ィ', "xi", 3);
		$charlist[] = array('ぃ', 'ィ' , 'ィ', "li", 3);
		$charlist[] = array('ぅ', 'ゥ' , 'ゥ', "xu", 3);
		$charlist[] = array('ぅ', 'ゥ' , 'ゥ', "lu", 3);
		$charlist[] = array('ぇ', 'ェ' , 'ェ', "xe", 3);
		$charlist[] = array('ぇ', 'ェ' , 'ェ', "le", 3);
		$charlist[] = array('ぉ', 'ォ' , 'ォ', "xo", 3);
		$charlist[] = array('ぉ', 'ォ' , 'ォ', "lo", 3);
		
		$charlist[] = array('ゃ', 'ャ' , 'ャ', "xya", 3);
		$charlist[] = array('ゃ', 'ャ' , 'ャ', "lya", 3);
		$charlist[] = array('ゅ', 'ュ' , 'ュ', "xyu", 3);
		$charlist[] = array('ゅ', 'ュ' , 'ュ', "lyu", 3);
		$charlist[] = array('ょ', 'ョ' , 'ョ', "xyo", 3);
		$charlist[] = array('ょ', 'ョ' , 'ョ', "lyo", 3);
	
		$charlist[] = array('ゎ', 'ヮ' , 'ァ', "lwa", 3);
		$charlist[] = array('ゎ', 'ヮ' , 'ァ', "xwa", 3);
		
		return $charlist;
	}

	function get_kigoulist_default(){
		$kigoulist = array(
			 array("zen"=>'&',"han"=>'&')
			,array("zen"=>'#',"han"=>'#')
			,array("zen"=>'$',"han"=>'$')
			,array("zen"=>';',"han"=>';')
			,array("zen"=>'%',"han"=>'%')
			,array("zen"=>'!',"han"=>'!')
			,array("zen"=>'”',"han"=>'"')
			,array("zen"=>'’',"han"=>'\'')
			,array("zen"=>'(',"han"=>'(')
			,array("zen"=>')',"han"=>')')
			,array("zen"=>'*',"han"=>'*')
			,array("zen"=>'+',"han"=>'+')
			,array("zen"=>',',"han"=>',')
			,array("zen"=>'-',"han"=>'-')
			,array("zen"=>'.',"han"=>'.')
			,array("zen"=>'/',"han"=>'/')
			,array("zen"=>':',"han"=>':')
			,array("zen"=>'<',"han"=>'<')
			,array("zen"=>'=',"han"=>'=')
			,array("zen"=>'>',"han"=>'>')
			,array("zen"=>'?',"han"=>'?')
			,array("zen"=>'@',"han"=>'@')
			,array("zen"=>'[',"han"=>'[')
			,array("zen"=>'¥',"han"=>'\\')
			,array("zen"=>']',"han"=>']')
			,array("zen"=>'^',"han"=>'^')
			,array("zen"=>'_',"han"=>'_')
			,array("zen"=>'`',"han"=>'`')
			,array("zen"=>'{',"han"=>'{')
			,array("zen"=>'|',"han"=>'|')
			,array("zen"=>'}',"han"=>'}')
			,array("zen"=>'~',"han"=>'~')

			,array("zen"=>'、',"han"=>',')
			,array("zen"=>'。',"han"=>'.')

			,array("zen"=>'【',"han"=>'≪')
			,array("zen"=>'】',"han"=>'≫')
			,array("zen"=>'「',"han"=>'[')
			,array("zen"=>'」',"han"=>']')
			,array("zen"=>'→',"han"=>'->')
			,array("zen"=>'←',"han"=>'<-')


		);
		return $kigoulist;
	}
}

コードばっかり増えてきたなぁ。