[PHP] アルファベットの大文字・小文字変換を行う全関数
スポンサーリンク
PHPは文字列操作を行う関数が充実した言語です。そのうち、アルファベットを大文字と小文字に相互変換を行う関数は合計7つあります。以下は、その7つの関数の使い方について、目的別に説明したものです。
すべての文字を大文字にする
文字列のすべてを大文字にする場合はstrtoupper()
を使います。マルチバイト文字が混じっている場合はmb_strtoupper()
を使います。
$str = "hello world."; echo strupper($str);//HELLO WORLD. $str = "全角のアルファベット「abc」"; echo mb_strupper($str);//全角のアルファベット「ABC」 echo strupper($str);//全角のアルファベット「abc」 strtoupperでは大文字に変換されない!!
マルチバイト文字の混じった文字列であっても、大文字に変換したいアルファベットがすべて半角ならば、strtoupper()
を使っても問題はありません。全角のアルファベットを大文字に変換したい場合はmb_strtoupper()
を使わなければなりません。
すべての文字を小文字にする
strtolower()
を使います。マルチバイト文字が混じっている場合はmb_strtolower()
を使います。strtoupperと使い方は同じです。
$str = "HELLO WORLD."; echo strupper($str);//hello world. $str = "全角のアルファベット「ABC」"; echo mb_strupper($str);//全角のアルファベット「abc」
文字列の先頭のアルファベットを大文字にする
文字列の先頭のアルファベットだけを大文字にする場合、ucfirst()
を使います。
$str = "hello world."; echo ucfirst($str);//Hello world. 先頭のhだけが大文字に
先頭がアルファベットではない文字列をucfirst()
に与えた場合は何もおきません。
$str = "マルチバイト文字を与えてみた"; echo ucfirst($str);//マルチバイト文字を与えてみた / 変化なし
文字列の先頭のアルファベットを小文字にする
lcfirst()
を使います。使い方はucfirst()
と同じです。
$str = "Hello world."; echo lcfirst($str);//hello world. 先頭のhが小文字に
lcfirst()
は先頭の文字だけが小文字に変わるので、文字列すべてが大文字の場合などにうっかり使うと、大変なことになります。
$str = "HELLO WORLD."; echo lcfirst($str);//hELLO WORLD. / 先頭のhだけが小文字に!
怪しげな文字列になってしまいました。
文章中の単語の先頭をすべて大文字に
アルファベットで構成された文章の、単語の先頭すべてを大文字にする場合、ucwords()
を使います。
$str = "hello world."; echo ucwords($str);//Hello World.
英文のタイトルを付ける際など、使いどころによっては大変便利な関数です。
注意すべきは、空白で区切られた後の単語だけを大文字に変換するという点です。以下のように、全角スペースの後の英単語や、日本語の間にスペースなしで埋め込まれた場合は大文字への変換は行われません。
$str = "hello□world."; echo ucwords($str);//Hello world. / 全角スペースの後ろの単語は変換されない $str = "hello, それから world"; echo ucwords($str);//Hello, それから World. / 直前に半角スペースがあればマルチバイト文字が混じっても問題はない
シングルバイト文字だけで構成された文字列の場合でも、単語がクオートで挟まれているなどの理由で半角スペースがない場合も変換が行われません。
$str = "single byte only, 'but mistake...'"; echo ucwords($str);//Single Byte Only 'but Mistake'
クオートの直後にあるbが小文字のままです。これはありがちなケースなので気をつけなければなりません。
なお、ucwords()
が空白として扱うのは、半角スペース、改行、タブなどです。
スポンサーリンク