日本語を処理する関数
「文字列を反転させる」strrevという関数があります。
「print strrev("ABC")」を実行すると文字列が反転し「CBA」と表示しますが、日本語の文字列の場合下記の例のように文字化けしてしまいます。
<?php
print strrev("あいうえお");
?>
実行結果1
これは、strrevという関数が日本語に対応してないからです。
PHPは英語圏で作られたものなので、もともとシングルバイト文字にしか対応していませんでした。strrev関数ももちろん対応しているのはシングルバイト文字だけです。
しかしマルチバイト文字も処理できなくては困るので、必要に応じて関数が作られました。これが「マルチバイト関数」です。
日本語処理を行う関数は、その先頭が「mb_」となっています。これが付いている関数はマルチバイトつまり日本語にも対応しています。
関数 mb_internal_encoding
書式 mb_internal_encoding(文字コードの種類)
機能 内部文字エンコーディングを設定する
返り値 成功した場合「TRUE」失敗の場合「FALSE」を返す。
「文字コードの種類」を指定しない場合は、現在の内部文字エンコーディン
グを返す。
<?php
print mb_internal_encoding();
?>
結果
・文字列操作関数
文字列の存在や位置を調べる
関数 mb_strpos
書式 mb_strpos("対象の文字列","調べる文字")
返り値 0番目から始める文字の位置を返す。文字列が見つからない場合、FALSE
を返す。
<?php
print mb_strpos("一二三四五六七八","五");
?>
結果
「五」は0から数えて4番目の位置にあるので、この値が返る。
指定した文字数だけ文字列を返す
関数 mb_substr
書式 mb_substr("対象の文字列",開始位置,文字数)
機能 「対象の文字列」の「開始位置」から「文字数」文の文字列を返す
返り値 取り出された文字列。文字列が見つからない場合FALSEを返す
<?php
print mb_substr("名前は最強です",3,2);
?>
結果
指定した文字より前(後)だけ取り出す
関数 mb_strrchr
書式 mb_strrchr("対象の文字列",”探す文字列",TRUEかFALSE)
機能 「対象なる文字列」から「探す文字列」を探し、その前(もしくは後)の文字を
取り出す
返り値 第三引数に「TRUE」を指定すると「探す文字列」の前までの文字列を返す。
「FALSE」を指定すると「探す文字列」から始まる最後までの文字列を返す。
「探す文字列」がない場合FALSEを返す。
<?php
print mb_strrchr("一二三四五",'三',TRUE);
?>
結果
また、ファイル名から拡張子を示す文字列を取り出すときに便利です。
<?php
$filename= "最強画像.jpg";
print mb_strrchr($filename,'.',FALSE);
?>
結果
文字数を調べる
関数 mb_strlen
書式 mb_strlen("対象の文字列")
機能 文字数を調べる
返り値 「対象の文字列」の文字数を返す
注意 マルチバイト1文字を1個と数える
<?php
print mb_strlen("一二三四五");
?>
結果
全角/半角を変換する
関数 mb_convert_kana
書式 mb_convert_kana("対象となる文字列",オプション)
機能 「オプション」にしたがってさまざまな変換を行う
返り値 変換後の文字列
<?php
print"NAMEはサイキョウ"."<br>";
print mb_convert_kana("NAMEはサイキョウ","rc");
?>
結果
オプション「r」は、全角英字を半角に、「c」は全角カタカナを全角ひらがなにというように変換できます。
アルファベットの大文字に変換する
関数 mb_strtoupper
書式 mb_strtoupper("対象となる文字列")
機能 小文字のアルファベットを大文字に変換する
返り値 変換後の文字列
アルファベットの小文字に変換する
関数 mb_strtolower
書式 mb_strtolower("対象となる文字列")
機能 大文字のアルファベットを小文字に変換する
返り値 変換後の文字列
アルファベットの文字列をオプションで大文字・小文字または先頭だけ大文字にする
関数 mb_convert_case
書式 mb_convert_case("対象となる文字列",オプション)
機能 「オプション」にしたがって、大文字・小文字の変換を行う
返り値 変換後の文字列
mb_convert_caseで指定するオプション
文字列 | 解説 |
MB_CASE_UPPER | 大文字へ変換 |
MB_CASE_UPPER | 小文字へ変換 |
MB_CASE_TITLE | 先頭だけ大文字、他は小文字に変換 |
<?PHP
print"NAME"."<BR>";
print mb_convert_case("NAME",MB_CASE_TITLE);
?>
実行結果
文字列を繰り返す
関数 str_repeat
書式 srt_repeat("繰り返す文字列”,繰り返すの回数)
機能 文字列を繰り返す
返り値 繰り返した文字列を返す
<?php
print str_repeat("最強!",10);
?>
実行結果