php strposを使って文字列の中に指定した文字列の位置を取得する
phpで、strposを使用して、文字列の中に指定した文字列の位置を取得するサンプルコードを記述してます。phpのバージョンは8.0です。
環境
- OS CentOS Linux release 8.0.1905 (Core)
- php 8.0.0
- nginx 1.14.1
strpos使い方
strposを使用すれば、文字列の中に指定した文字列の位置を取得することが可能です。
strpos(文字列, 検索したい文字列);
// 存在した場合は、文字列の見つかった位置を返す。
// なければfalseが返ります。
以下は、文字列の中に指定した文字列の位置を取得するサンプルコードとなります。
<?php
$str1 = 'abcde';
$str2 = 'b';
$str3 = 'cd';
$str4 = 'f';
var_dump(strpos($str1, $str2));
// int(1)
var_dump(strpos($str1, $str3));
// int(2)
var_dump(strpos($str1, $str4));
// bool(false)
日本語でも動作しますが、マルチバイトに対応してないため「本日は」までは、1文字3バイトで計算されるため「9」が返ってきます。
<?php
$str1 = '本日は晴天なり';
$str2 = '晴天';
var_dump(strpos($str1, $str2));
// int(9)
日本語などのマルチバイト文字列が含まれる場合は「mb_strpos」を使用することで、見たまま1文字として扱うことができます。
<?php
$str1 = '本日は晴天なり';
$str2 = '晴天';
var_dump(mb_strpos($str1, $str2));
// int(3)
サロゲートペアの絵文字も対応してそうですが、
<?php
$str1 = '👨👩🍺';
$str2 = '🍺';
var_dump(mb_strpos($str1, $str2));
// int(2)
7文字で1文字の「👨👩👧👦」には対応してなさそうです。
<?php
$str1 = '👨👩👧👦🍺';
$str2 = '🍺';
var_dump(mb_strpos($str1, $str2));
// int(8)
-
前の記事
javascript lodashを使って2つの値の割り算を行う 2021.11.30
-
次の記事
ASP.NET Core NpgsqlとDapperを使って SELECTした結果をWEB apiで使用する 2021.11.30
コメントを書く