PHPで文字列の要素数・長さを取得する方法、strlenとmb_strlenの違いと使い方

PHP-strlen

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、PHPで文字列の要素数・長さを取得する方法、strlenとmb_strlenの違いと使い方について解説していきます。

PHPで文字列の要素数・長さを取得する方法

PHPで文字列の要素数・長さを取得するには、strlen() またはmb_strlen()を使用します。

strlen()mb_strlen()も文字列の要素数・長さ(int・数値)を実行結果(返り値)として返します。

strlen()の基本構文はstrlen(string $string): int の形です。

またmb_strlen()の基本構文はmb_strlen(string $string, ?string $encoding = null): intの形になります。

strlenとmb_strlenの違いとは?

それでは、strlenとmb_strlenの違いとは、何でしょうか。

この2つの違いは、マルチバイト文字(Multibyte-String)の扱いです。

strlen()では、バイト数のまま文字列の要素数・長さを数えますが、

mb_strlen()では、マルチバイト文字の1文字は1個として数えられます。

ちなみに、mbはマルチバイト(multibyte)の略です。

<?php

// 1. strlen — 文字列の長さを得る
// strlen(string $string): int

// 2. mb_strlen — 文字列の長さを得る
// mb_strlen(string $string, ?string $encoding = null): int
// => マルチバイト文字の1文字は1個として数えられます。

$str = '12';

$robotama = 'robotama';

$robotama_2 = 'ロボ玉';

echo '------------------ strlen ---------------------'. "\n";

echo strlen($str) . "\n";
echo strlen($robotama) . "\n";
echo strlen($robotama_2) . "\n";

echo '------------------ mb_strlen ------------------'. "\n";

echo mb_strlen($str) . "\n";
echo mb_strlen($robotama) . "\n";
echo mb_strlen($robotama_2) . "\n";

// [ 実行結果 ]
// ------------------ strlen ---------------------
// 2
// 8
// 9

// ------------------ mb_strlen ------------------
// 2
// 8
// 3

文字列の長さによって、処理をするSampleCode

今回のSampleCodeでは、文字列型の数値表現に対して、指定の桁(3桁)までは先頭に0を付け加えるような処理をしています。

$str = '12';

$str_length = strlen($str);

// 必ず3桁に調整する
if ($str_length <= 2) {

    $add_zero = 3 - $str_length;
    
    for ($count = 0; $count < $add_zero; $count++){
        $str = 0 . $str;
    }
    echo $str;
    // 012
}

次のSampleCodeは、関数-Versionです。

// 文字列の数値を必ず3桁に調整する
function ThreeDigits ($str_num) {
    $length = strlen($str_num);

    if ($length <= 2) {
        $add_zero = 3 - $length;

        for ($count = 0; $count < $add_zero; $count++){
            $str_num = '0' . $str_num;
        }
    }
    return $str_num;
}

echo ThreeDigits('12');
// 012

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

PHP / Laravel書籍

最近の投稿