mb_convert_kana 濁点の結合 かな、カタカナ混在




$str = 'ぐボピ.png';
$strs = mb_str_split($str);
$strs = array_reverse($strs);
$nextkey = -1;

foreach ($strs as $key => $str) { //かな true
  if(preg_match("/^[ぁ-ん]+$/u",$str)){
    $kana = true;
  }else{
    $kana = false;
  } 

  if(preg_match("/゙|゚/",$str)){ //濁点なら保存
    $dakten = $str;
    $nextkey = ++$key;
    continue;
  }
  
  if($key == $nextkey){ //濁点なら次の文字の後ろに連結
    $str .= $dakten; 
  }
  
  $str = dakten_replace($str); //置換 濁点も一文字になってる
  
      
  if( $kana ) {  // 元が "かな" ならかなに戻す
    $str = mb_convert_kana($str, 'c', 'UTF-8');
  }

     $newstrs[] = $str ; 
}

$strs = array_reverse($newstrs);
$str = implode('',$strs);
  var_dump($str);

  function dakten_replace ($str){
    $str = str_replace('゙','゛' ,$str); //全角濁点を半角に
    $str = str_replace('゚','゚' ,$str);
    $str = mb_convert_kana($str, 'hkV', 'UTF-8');
    $str = mb_convert_kana($str, 'HV', 'UTF-8');
    $str = mb_convert_kana($str, 'C', 'UTF-8');
    return $str;
  }


string(13) “ぐボピ.png”
$str = ‘ぐボピ.png’;
比較しても見た目ではわからない。

濁点はひらがなでもカタカナでもないが、かなとカタカナは等しい


Categories:

Tags: