ラボ > PHP:文字関連

PHP 仮名とカナ、大文字と小文字などの変換(strtolower()、mb_convert_kana())

大文字・小文字、仮名・カナ、全角・半角などの変換。

作成日:2017-11-28, 更新日:2018-03-20

大文字と小文字

大文字→小文字
echo strtolower(文字列)
小文字→大文字
echo strtoupper(文字列)

仮名とカナ、全角と半角たち

echo mb_convert_kana(文字列, オプション)

オプション

r 「全角」英字を「半角」に変換 R 「半角」英字を「全角」に変換
n 「全角」数字を「半角」に変換 N 「半角」数字を「全角」に変換
a 「全角」英数字を「半角」に変換 A 「半角」英数字を「全角」に変換
s 「全角」スペースを「半角」に変換(U+3000 -> U+0020) S 「半角」スペースを「全角」に変換(U+0020 -> U+3000)
k 「全角カタカナ」を「半角カタカナ」に変換 K 「半角カタカナ」を「全角カタカナ」に変換
h 「全角ひらがな」を「半角カタカナ」に変換 H 「半角カタカナ」を「全角ひらがな」に変換
c 「全角カタカナ」を「全角ひらがな」に変換 C 「全角ひらがな」を「全角カタカナ」に変換
V 濁点付きの文字を一文字に変換"K", "H" と共に使用
KVで変換
半角カタカナから全角カタカナへの変換。「ヷ・ヺ」が変換されない
HVで変換
半角カタカナからひらがなへの変換。「ゔ」が変換されない
cで変換
全角カタカナからひらがなへの変換。「ヴヽヾヵヶ」は変換されない。また、ひらがなに無い「ヷヸヹヺ」も変換されない
cで変換
全角カタカナからひらがなへの変換。「ヴヽヾヵヶ」は変換されない。また、ひらがなに無い「ヷヸヹヺ」も変換されない
KVで変換
濁点・半濁点の結合「U+309B」「U+309C」。半角カタカナからの変換の時以外には何も変換されない
aで変換
全角英数字から半角英数字への変換。「"'\~」は変換されない
Aで変換
半角英数字から全角英数字への変換。「" ' \ ~」は変換されない

検索させるとき

検索する文字と元データの文字を誰が入力するのかが問題。
空白や全角、カナなど考慮するのが面倒なので、検索前に少し調整しておきたい。

function chgWord($word) {
  $fixWord = $word;
  
  // KVC:「半角カナ(濁点付きの文字)、全角かな」を「全角カナ」
  // a  :「全角英数字」を「半角英数字」
  // s  :「全角スペース」を「半角スペース」
  $fixWord = mb_convert_kana($fixWord, 'KVCas');
  
  // mb_convert_kana()で対応できなかった記号変換
  $seedAry = array('"', ''', '\', '~',);
  $chngAry = array('"', "'", "\\", '~',);
  $fixWord = str_replace($seedAry, $chngAry, $fixWord);
  
  // 空白やタブ、改行等を削除
  $spceAry = array(' ', "\t", "\n", "\r", "\0", "\x0B");
  $fixWord = str_replace($spceAry, '', $fixWord);

  // 大文字→小文字
  $fixWord = strtolower($fixWord);
  
  return $fixWord;
}