[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()が空白として扱うのは、半角スペース、改行、タブなどです。

スポンサーリンク


Comment