日本語を処理する関数

「文字列を反転させる」strrevという関数があります。

「print strrev("ABC")」を実行すると文字列が反転し「CBA」と表示しますが、日本語の文字列の場合下記の例のように文字化けしてしまいます。

<?php
print strrev("あいうえお");
?>

実行結果1

f:id:mkyosuke:20191127160425p:plain

これは、strrevという関数が日本語に対応してないからです。

PHP英語圏で作られたものなので、もともとシングルバイト文字にしか対応していませんでした。strrev関数ももちろん対応しているのはシングルバイト文字だけです。

しかしマルチバイト文字も処理できなくては困るので、必要に応じて関数が作られました。これが「マルチバイト関数」です。

日本語処理を行う関数は、その先頭が「mb_」となっています。これが付いている関数はマルチバイトつまり日本語にも対応しています。

関数 mb_internal_encoding

書式 mb_internal_encoding(文字コードの種類)

機能 内部文字エンコーディングを設定する

返り値 成功した場合「TRUE」失敗の場合「FALSE」を返す。

    「文字コードの種類」を指定しない場合は、現在の内部文字エンコーディン

     グを返す。

<?php
print mb_internal_encoding();
?>

結果

f:id:mkyosuke:20191127162628p:plain

・文字列操作関数

文字列の存在や位置を調べる

関数 mb_strpos

書式  mb_strpos("対象の文字列","調べる文字")

返り値 0番目から始める文字の位置を返す。文字列が見つからない場合、FALSE

    を返す。

<?php
print mb_strpos("一二三四五六七八","五");
?>

結果

「五」は0から数えて4番目の位置にあるので、この値が返る。

f:id:mkyosuke:20191127163409p:plain

 

指定した文字数だけ文字列を返す

関数 mb_substr

書式 mb_substr("対象の文字列",開始位置,文字数)

機能 「対象の文字列」の「開始位置」から「文字数」文の文字列を返す

返り値 取り出された文字列。文字列が見つからない場合FALSEを返す

 

<?php
print mb_substr("名前は最強です",3,2);
?>

結果

f:id:mkyosuke:20191127164413p:plain

指定した文字より前(後)だけ取り出す

関数 mb_strrchr

書式 mb_strrchr("対象の文字列",”探す文字列",TRUEかFALSE)

機能 「対象なる文字列」から「探す文字列」を探し、その前(もしくは後)の文字を

    取り出す

返り値 第三引数に「TRUE」を指定すると「探す文字列」の前までの文字列を返す。

    「FALSE」を指定すると「探す文字列」から始まる最後までの文字列を返す。

    「探す文字列」がない場合FALSEを返す。

<?php
print mb_strrchr("一二三四五",'三',TRUE);
?>

結果

f:id:mkyosuke:20191127165754p:plain

また、ファイル名から拡張子を示す文字列を取り出すときに便利です。

<?php
$filename= "最強画像.jpg";
print mb_strrchr($filename,'.',FALSE);
?>

結果

f:id:mkyosuke:20191127170217p:plain

 

文字数を調べる

関数 mb_strlen

書式 mb_strlen("対象の文字列")

機能 文字数を調べる

返り値 「対象の文字列」の文字数を返す

注意 マルチバイト1文字を1個と数える

<?php
print mb_strlen("一二三四五");
?>

結果

f:id:mkyosuke:20191127170732p:plain

全角/半角を変換する

関数 mb_convert_kana

書式 mb_convert_kana("対象となる文字列",オプション)

機能 「オプション」にしたがってさまざまな変換を行う

返り値 変換後の文字列

<?php
print"NAMEはサイキョウ"."<br>";
print mb_convert_kana("NAMEはサイキョウ","rc");
?>

結果

f:id:mkyosuke:20191127171741p:plain

オプション「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);
?>

実行結果

f:id:mkyosuke:20191127173716p:plain

 

文字列を繰り返す

関数 str_repeat

書式 srt_repeat("繰り返す文字列”,繰り返すの回数)

機能 文字列を繰り返す

返り値 繰り返した文字列を返す

<?php
print str_repeat("最強!",10);
?>

実行結果

f:id:mkyosuke:20191127174321p:plain