Skip to content

Instantly share code, notes, and snippets.

@kijtra
Last active October 23, 2018 11:27
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kijtra/984260 to your computer and use it in GitHub Desktop.
Save kijtra/984260 to your computer and use it in GitHub Desktop.
[PHP] 文字列の先頭文字がアカサタナ行のどれかを取得する関数。
<?php
/* カタカナ限定で高速化したもの */
function syllabary($str){
$charset='utf-8';
if(empty($str)){
return false;
}
$dic=array(
'ア'=>'ア','イ'=>'ア','ウ'=>'ア','エ'=>'ア','オ'=>'ア',
'カ'=>'カ','キ'=>'カ','ク'=>'カ','ケ'=>'カ','コ'=>'カ',
'ガ'=>'カ','ギ'=>'カ','グ'=>'カ','ゲ'=>'カ','ゴ'=>'カ',
'サ'=>'サ','シ'=>'サ','ス'=>'サ','セ'=>'サ','ソ'=>'サ',
'ザ'=>'サ','ジ'=>'サ','ズ'=>'サ','ゼ'=>'サ','ゾ'=>'サ',
'タ'=>'タ','チ'=>'タ','ツ'=>'タ','テ'=>'タ','ト'=>'タ',
'ダ'=>'タ','ヂ'=>'タ','ヅ'=>'タ','デ'=>'タ','ド'=>'タ',
'ナ'=>'ナ','ニ'=>'ナ','ヌ'=>'ナ','ネ'=>'ナ','ノ'=>'ナ',
'ハ'=>'ハ','ヒ'=>'ハ','フ'=>'ハ','ヘ'=>'ハ','ホ'=>'ハ',
'バ'=>'ハ','ビ'=>'ハ','ブ'=>'ハ','ベ'=>'ハ','ボ'=>'ハ',
'パ'=>'ハ','ピ'=>'ハ','プ'=>'ハ','ペ'=>'ハ','ポ'=>'ハ',
'マ'=>'マ','ミ'=>'マ','ム'=>'マ','メ'=>'マ','モ'=>'マ',
'ヤ'=>'ヤ','ユ'=>'ヤ','ヨ'=>'ヤ',
'ラ'=>'ラ','リ'=>'ラ','ル'=>'ラ','レ'=>'ラ','ロ'=>'ラ',
'ワ'=>'ワ','ヲ'=>'ワ','ン'=>'ワ',
);
$head=mb_substr(trim($str),0,1,$charset);
if(!empty($dic[$head])){
return $dic[$head];
}
}
?>
<?php
function syllabary($str,$hiraganaFlag=false){
$charset='utf-8';
if(empty($str)){
return false;
}
$str=trim($str);
$hiragana=array(
array('あ','あいうえお'),
array('か','かきくけこがぎぐげご'),
array('さ','さしすせそざじずぜぞ'),
array('た','たちつてとだぢづでど'),
array('な','なにぬねの'),
array('は','はひふへほばびぶべぼぱぴぷぺぽ'),
array('ま','まみむめも'),
array('や','やゆよ'),
array('ら','らりるれろ'),
array('わ','わをん')
);
$katakana=array(
array('ア','アイウエオ'),
array('カ','カキクケコガギグゲゴ'),
array('サ','サシスセソザジズゼゾ'),
array('タ','タチツテトダヂヅデド'),
array('ナ','ナニヌネノ'),
array('ハ','ハヒフヘホバビブベボパピプペポ'),
array('マ','マミムメモ'),
array('ヤ','ヤユヨ'),
array('ラ','ラリルレロ'),
array('ワ','ワヲン')
);
if($hiraganaFlag){
$arr=$hiragana;
$str=mb_convert_kana($str,"c",$charset);
}else{
$arr=$katakana;
$str=mb_convert_kana($str,"C",$charset);
}
$head=mb_substr($str,0,1,$charset);
foreach($arr as $v){
if(mb_strpos($v[1],$head,0,$charset)!==false){
return $v[0];
}
}
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment