php substrで文字列の一部を取得する
phpで、substrを使用して、文字列の一部を取得するサンプルコードを記述してます。phpのバージョンは8.0です。
環境
- OS CentOS Stream release 8
- php 8.0.0
- nginx 1.14.1
substr使い方
substrを使用すれば、文字列の一部を取得することが可能です。
substr(文字列 , 開始位置 [, 取得する文字数]);
以下は、文字列の一部を取得するサンプルコードとなります。
<?php
$str = 'abcde';
// 開始位置3文字目
echo substr($str, 2) . PHP_EOL;
// cde
// 開始位置4文字目
echo substr($str, 3) . PHP_EOL;
// de
マイナスを指定すると後ろから取得することが可能です。
<?php
$str = 'abcde';
// 開始位置 後ろから2文字
echo substr($str, -2) . PHP_EOL;
// de
// 開始位置 後ろから1文字
echo substr($str, -1) . PHP_EOL;
// e
取得する文字数を指定することも可能です。
<?php
$str = 'abcde';
// 開始位置 2文字目で2文字
echo substr($str, 1, 2) . PHP_EOL;
// bc
// 開始位置 2文字目で3文字
echo substr($str, 1, 3) . PHP_EOL;
// bcd
取得する文字数にマイナスを指定すると、削除されます。
<?php
// 開始位置 2文字目で最後の1文字を削除
echo substr($str, 1, -1) . PHP_EOL;
// bcd
日本語の場合は、マルチバイトなため結果がおかしくなります。
<?php
$str = 'あいうえお';
// 開始位置3文字目
echo substr($str, 2) . PHP_EOL;
// �いうえお
// 開始位置4文字目
echo substr($str, 3) . PHP_EOL;
// いうえお
mb_substr
日本語がある場合は「mb_substr」を使用します。
mb_substr(文字列 , 開始位置 [, 取得する文字数] [,エンコード]);
以下は、日本語が混ざった文字列の一部を取得するサンプルコードとなります。
<?php
$str = 'あいうえお';
// 開始位置3文字目
echo mb_substr($str, 2) . PHP_EOL;
// うえお
// 開始位置4文字目
echo mb_substr($str, 3) . PHP_EOL;
// えお
アルファベットでも「substr」と同じ結果が得られます。
<?php
$str = 'abcde';
// 開始位置3文字目
echo mb_substr($str, 2) . PHP_EOL;
// cde
// 開始位置4文字目
echo mb_substr($str, 3) . PHP_EOL;
// de
同じアルファベットであれば、当然パフォーマンスは「substr」の方がいいです。
【参考】 「substr」と「mb_substr」を1000万回同じコードを実行した結果
測定結果 : substr
process time: 2.82657 ミリ秒
測定結果 : mb_substr
process time: 3.09538 ミリ秒
-
前の記事
javascript lodashを使って親クラスを含んだオブジェクトのキーと値を後ろから取得する 2021.12.21
-
次の記事
VSCODE anaconda使用時に「CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate’.」が発生した場合の対処法 2021.12.21
コメントを書く