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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter

<code>
$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;
}
</code>
 <code> $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; } </code>



$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: