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

PHP

更新履歴

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

はじめに

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

mb_strlen

mb_strlen()関数のサンプルプログラムです。
この関数ではマルチバイト文字の文字数をカウントできます。

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

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

    $str1 = "abcdefghijk";

    echo "文字列:" . $str1 . "<br>\n";
    echo 'strlen():' . strlen($str1) . "<br>\n";
    echo 'mb_strlen():' . mb_strlen($str1) . "<br>\n";
    echo "<br>\n";

    $str2 = "abcdefghijk";
    echo "文字列:" . $str2 . "<br>\n";
    // UTF-8の場合、全角文字は1文字3バイト
    // 半角8文字×1バイト+全角3文字×3バイト = 8 + 9 = 17バイトになる
    echo 'strlen():' . strlen($str2) . "<br>\n";    
    echo 'mb_strlen():' . mb_strlen($str2) . "<br>\n";
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_05_06.php<br>
【PHP】マルチバイト関数:mb_strlen<br>
文字列:abcdefghijk<br>
strlen():11<br>
mb_strlen():11<br>
<br>
文字列:abcdefghijk<br>
strlen():17<br>
mb_strlen():11<br>

mb_strpos

mb_strpos()関数のサンプルプログラムです。

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

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

    $str1 = "Hello World, Hello, Mary, Did you receive the message?";

    echo "文字列:" . $str1 . "<br>\n";
    echo 'strpos($str1, "Hello"):' . strpos($str1, "Hello") . ":<br>\n";
    echo 'mb_strpos($str1, "Hello"):' . mb_strpos($str1, "Hello") . ":<br>\n";
    echo 'strpos($str1, "Mary"):' . strpos($str1, "Mary") . ":<br>\n";
    echo 'mb_strpos($str1, "Mary"):' . mb_strpos($str1, "Mary") . ":<br>\n";
    echo 'strpos($str1, "Hello"):' . strpos($str1, "Hello", 3) . ":<br>\n";
    echo 'mb_strpos($str1, "Hello"):' . mb_strpos($str1, "Hello", 3) . ":<br>\n";
    echo 'strpos($str1, "Hallo"):' . strpos($str1, "Hallo") . ":<br>\n";
    echo 'mb_strpos($str1, "Hallo"):' . mb_strpos($str1, "Hallo") . ":<br>\n";
    echo "<br>\n";

    $str2 = "ハローワールド、ハロー、Mary、メッセージは届いた?";
    echo "文字列:" . $str2 . "<br>\n";
    echo 'strpos($str2, "ハロー"):' . strpos($str2, "ハロー") . ":<br>\n";
    echo 'mb_strpos($str2, "ハロー"):' . mb_strpos($str2, "ハロー") . ":<br>\n";
    echo 'strpos($str2, "Mary"):' . strpos($str2, "Mary") . ":<br>\n";
    echo 'mb_strpos($str2, "Mary"):' . mb_strpos($str2, "Mary") . ":<br>\n";
    echo 'strpos($str2, "ハロー"):' . strpos($str2, "ハロー", 3) . ":<br>\n";
    echo 'mb_strpos($str2, "ハロー"):' . mb_strpos($str2, "ハロー", 3) . ":<br>\n";
    echo 'strpos($str2, "ヘロー"):' . strpos($str2, "ヘロー") . ":<br>\n";
    echo 'mb_strpos($str2, "ヘロー"):' . mb_strpos($str2, "ヘロー") . ":<br>\n";
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_05_07.php<br>
【PHP】マルチバイト関数:mb_strpos<br>
文字列:Hello World, Hello, Mary, Did you receive the message?<br>
strpos($str1, "Hello"):0:<br>
mb_strpos($str1, "Hello"):0:<br>
strpos($str1, "Mary"):20:<br>
mb_strpos($str1, "Mary"):20:<br>
strpos($str1, "Hello"):13:<br>
mb_strpos($str1, "Hello"):13:<br>
strpos($str1, "Hallo")::<br>
mb_strpos($str1, "Hallo")::<br>
<br>
文字列:ハローワールド、ハロー、Mary、メッセージは届いた?<br>
strpos($str2, "ハロー"):0:<br>
mb_strpos($str2, "ハロー"):0:<br>
strpos($str2, "Mary"):36:<br>
mb_strpos($str2, "Mary"):12:<br>
strpos($str2, "ハロー"):24:<br>
mb_strpos($str2, "ハロー"):8:<br>
strpos($str2, "ヘロー")::<br>
mb_strpos($str2, "ヘロー")::<br>

mb_strstr

mb_strstr()関数のサンプルプログラムです。

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

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

    $str1 = "Hello World, Hello, Mary, Did you receive the message?";

    echo "文字列:" . $str1 . "<br>\n";
    echo 'strstr($str1, "ll"):' . strstr($str1, "ll") . ":<br>\n";
    echo 'mb_strstr($str1, "ll"):' . mb_strstr($str1, "ll") . ":<br>\n";
    echo 'strstr($str1, "Mary"):' . strstr($str1, "Mary") . ":<br>\n";
    echo 'mb_strstr($str1, "Mary"):' . mb_strstr($str1, "Mary") . ":<br>\n";
    echo 'strstr($str1, "ll"):' . strstr($str1, "ll", true) . ":<br>\n";
    echo 'mb_strstr($str1, "ll"):' . mb_strstr($str1, "ll", true) . ":<br>\n";
    echo 'strstr($str1, "Hallo"):' . strstr($str1, "Hallo") . ":<br>\n";
    echo 'mb_strstr($str1, "Hallo"):' . mb_strstr($str1, "Hallo") . ":<br>\n";
    echo "<br>\n";

    $str2 = "ハローワールド、ハロー、Mary、メッセージは届いた?";
    echo "文字列:" . $str2 . "<br>\n";
    echo 'strstr($str2, "ロー"):' . strstr($str2, "ロー") . ":<br>\n";
    echo 'mb_strstr($str2, "ロー"):' . mb_strstr($str2, "ロー") . ":<br>\n";
    echo 'strstr($str2, "Mary"):' . strstr($str2, "Mary") . ":<br>\n";
    echo 'mb_strstr($str2, "Mary"):' . mb_strstr($str2, "Mary") . ":<br>\n";
    echo 'strstr($str2, "ロー"):' . strstr($str2, "ロー", true) . ":<br>\n";
    echo 'mb_strstr($str2, "ロー"):' . mb_strstr($str2, "ロー", true) . ":<br>\n";
    echo 'strstr($str2, "ヘロー"):' . strstr($str2, "ヘロー") . ":<br>\n";
    echo 'mb_strstr($str2, "ヘロー"):' . mb_strstr($str2, "ヘロー") . ":<br>\n";
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_05_08.php<br>
【PHP】マルチバイト関数:mb_strstr<br>
文字列:Hello World, Hello, Mary, Did you receive the message?<br>
strstr($str1, "ll"):llo World, Hello, Mary, Did you receive the message?:<br>
mb_strstr($str1, "ll"):llo World, Hello, Mary, Did you receive the message?:<br>
strstr($str1, "Mary"):Mary, Did you receive the message?:<br>
mb_strstr($str1, "Mary"):Mary, Did you receive the message?:<br>
strstr($str1, "ll"):He:<br>
mb_strstr($str1, "ll"):He:<br>
strstr($str1, "Hallo")::<br>
mb_strstr($str1, "Hallo")::<br>
<br>
文字列:ハローワールド、ハロー、Mary、メッセージは届いた?<br>
strstr($str2, "ロー"):ローワールド、ハロー、Mary、メッセージは届いた?:<br>
mb_strstr($str2, "ロー"):ローワールド、ハロー、Mary、メッセージは届いた?:<br>
strstr($str2, "Mary"):Mary、メッセージは届いた?:<br>
mb_strstr($str2, "Mary"):Mary、メッセージは届いた?:<br>
strstr($str2, "ロー"):ハ:<br>
mb_strstr($str2, "ロー"):ハ:<br>
strstr($str2, "ヘロー")::<br>
mb_strstr($str2, "ヘロー")::<br>

コメント