【PHP】これで分かる関数! – マルチバイトその2 –

PHP

更新履歴

更新日更新者更新内容
2021/8/21JJI・”はじめに”の段落を追加
・サンプルプログラムの実行結果に画面の画像を追加

はじめに

サンプルプログラムの中で次の記事で載せている関数を使用している場合があります。

mb_split

mb_split()関数のサンプルプログラムです。
正規表現で分割できる関数ですが、正規表現は別の記事で詳しく取り上げるため、ここでは簡単な例を紹介します。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】マルチバイト関数:mb_split<br>\n";

    $str1 = "090-1234-5678";

    echo "分割前の文字列:" . $str1 . "<br>\n";
    $ary = mb_split("-", $str1);
    echo_array1($ary);

    $str1 = "090-1234-5678";

    echo "分割前の文字列:" . $str1 . "<br>\n";
    $ary = mb_split("-", $str1);
    echo_array1($ary);
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_05_04.php<br>
【PHP】マルチバイト関数:mb_split<br>
分割前の文字列:090-1234-5678<br>
[0]:090: [1]:1234: [2]:5678:<br><br>
分割前の文字列:090-1234-5678<br>
[0]:090: [1]:1234: [2]:5678:<br><br>

mb_str_split

mb_str_split()関数のサンプルプログラムです。
この関数の場合、split()関数で正しく分割できないマルチバイト文字も分割できます。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】マルチバイト関数:mb_str_split<br>\n";

    $str1 = "abcdefghijk";

    echo "分割前の文字列:" . $str1 . "<br>\n";
    echo "str_split()の分割<br>\n";
    $ary = str_split($str1, 3);
    echo_array1($ary);

    echo "mb_str_split()の分割<br>\n";
    $ary = mb_str_split($str1, 3);
    echo_array1($ary);

    $str2 = "abcdefghijk";

    echo "分割前の文字列:" . $str2 . "<br>\n";
    echo "str_split()の分割、正しく分割できないため、文字化けが発生<br>\n";
    $ary = str_split($str2, 3);
    echo_array1($ary);

    echo "mb_str_split()の分割<br>\n";
    $ary = mb_str_split($str2, 3);
    echo_array1($ary);
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_05_05.php<br>
【PHP】マルチバイト関数:mb_str_split<br>
分割前の文字列:abcdefghijk<br>
str_split()の分割<br>
[0]:abc: [1]:def: [2]:ghi: [3]:jk:<br><br>
mb_str_split()の分割<br>
[0]:abc: [1]:def: [2]:ghi: [3]:jk:<br><br>
分割前の文字列:abcdefghijk<br>
str_split()の分割<br>
[0]:abc: [1]:d�: [2]:�fg: [3]:h: [4]:i: [5]:jk:<br><br>
mb_str_split()の分割<br>
[0]:abc: [1]:def: [2]:ghi: [3]:jk:<br><br>

コメント