三陸牡蠣復興支援プロジェクト「SAVE SANRIKU OYSTER」



はじめに

関数の仕様変更の可能性について

PHPが提供する関数の仕様は、バージョンアップするごとに微妙に変わってたりします。

当ミニリファレンスに記載した内容は、執筆時点と閲覧時点とで、PHPのバージョンが異なる可能性がであり、その間に関数の仕様が変更されてしまっているかもしれません。

なので、最終的には自分で確認して下さい。

マルチバイト文字列関数について

シングルバイト文字とマルチバイト文字

文字には、「シングルバイト文字」と「マルチバイト文字」という2つの種類が存在します。

1文字を表現するのに必要なバイト数が1バイトである文字を「シングルバイト文字」と言い、必要なバイト数が複数バイトである文字を「マルチバイト文字」と言います。

「a,b,c」等のアルファベット(半角)は「シングルバイト文字」(文字コードによっては「マルチバイト文字」である場合もある)で、「あ、い、う」等の日本語は「マルチバイト文字」です。

1バイトは8ビットであり、8個の「0」と「1」で表現できる組み合わせは256通りしかなく、漢字を含めた日本語を表現し切れません。その為、ひらがなや漢字等の文字は1文字表現するのに複数バイト使用しています。

幾つかの文字コードの「マルチバイト文字」は、マルチバイト文字の始まりと終わりを表す情報が付加されていて、文字列を処理する「文字列関数」で処理すると文字が破壊されてしまう可能性があります。

そんなこんなで、文字列関数で日本語を処理すると正常に機能しません。で、日本語を処理するために「マルチバイト文字列関数」がモジュールとして用意されています(「PHPのインストール/PHPのインストールと設定::PHP拡張モジュールを有効にする」のページでインストールしました)。

日本語を処理する時はこの「マルチバイト文字列関数」を使う事になります。

ちなみに、「マルチバイト文字列関数」の関数名は全て「mb_」で始まります。

文字エンコーディング(文字コード)に関する事

PHPファイルの文字コードは「EUC-JP」にする

一部の関数では、正常に機能しない文字エンコーディング(文字コード)があります。PHPで動作するエンコードとそうでないエンコードは以下のようになっています。

動作するエンコードISO-8859-*、EUC-JP、UTF-8
動作しないエンコードJIS、SJIS(shift_jis)

このような事から、ここでは、PHPスクリプトを記述するファイルの文字コードを「EUC-JP」にします。

しかしながら、IEのデフォルトエンコード(文字コード)が「シフト JIS」になっているので、日本語を出力した場合に文字コードの相違によって文字化けを起こします。

この問題を解決するには文字コードが「EUC-JP」であるとブラウザに知らせるなりする必要があります。これには以下の様な方法があります。

(A)HTMLの「meta」要素で文字コードに「EUC-JP」を指定する。

<html>
<meta http-equiv="Content-Type" content="text/html;
                                   charset=EUC-JP" />
<?php
    /* PHPコード */
?>
</html>

(B)「header()」関数で文字コードを指定する。

<?php
    header("Content-Type: text/html; charset=EUC-JP");
    
    $str = "ほでなすPHP";
    
    echo $str;
?>

(C)「mb_convert_encoding()」関数で文字コードを変換する。

<?php
    $str = "ほでなすPHP";
    $str = mb_convert_encoding($str, "SJIS", "EUC-JP");
    
    echo $str;
    
    /*
    文字列「$str」の文字コードは「SJIS(shift_jis)」になります。
    */
?>

PHPファイルの文字コードを「EUC-JP」にする

テキストファイルの文字コードを変換するには、変換したい文字コードに対応したテキストエディタが必要になります。

Windows付属の「メモ帳」や「ワードパッド」は、文字コードが「shift_jis」固定なので、使えません。Vector辺りでお気に入りを見付けて下さい。ちなみに、少々値が張ります(アカデミックライセンス等(無料)もあります)がEmEditor(管理人愛用)がお勧めです。

PHPスクリプトを記述したファイルを保存する際、文字コードに「EUC-JP」を指定すればOKです。

リファレンスの見方

関数の形態や機能は以下のように記述しています。

date()関数
string date(string フォーマット[, int タイムスタンプ])
(機能説明)

関数名の前にある「string」等は、「関数が返す値の型」です。

引数内の、各引数の前にある「string」等は、「引数の型」です。

「引数の型」が「mixed」である場合は、「引数の型が多様である」事を意味します。

「引数の型」が「number」である場合は、「引数の型」が「integer」もしくは「float」である事を意味します。

引数の「[](各括弧)」で括られている個所は「省略可」である事を意味します。

引数内に「void」とある場合は、「引数が必要無い」事を意味します。

作成日:2004年06月09日 最終更新日:2004年06月10日
【印刷モード風モード で表示】