環境
- windows10
- DockerDesktop for Win 3.5.x
- PHP 8.x
- VsCode
- gitbash 2.32.0.1
一覧
文字列に特定の文字列が含まれるかチェックしたい。
概要
str_contains以外は、先頭に文字が存在する場合は0を返すので、比較の際は注意が必要。(例えば、(0 == true)はfalseになる。)
メソッド名 | 内容 | 返り値 | 補足 |
strpos | 文字列が最初に現れる位置を探す | 含まれる場合はその位置をintで 含まれない場合は false を返す | 大文字小文字区別。 |
stripos | 〃 | 〃 | 大文字小文字区別しない。 |
mb_strpos | 〃 | 〃 | strposのマルチバイト(全角)対応版 |
mb_stripos | 〃 | 〃 | striposのマルチバイト(全角)対応版 |
str_contains | 特定の文字列が含まれているかチェック | 含まれていた場合 true そうでない場合、false を返す | 大文字小文字を区別する |
具体例
strpos
// 0から開始する
var_dump(strpos("豊臣秀吉", "秀")); // int(2)
var_dump(strpos("hoge", "HO")); // bool(false)
stripos
大文字小文字区別しない
var_dump(stripos("hoge", "HO")); // int(0)
mb_strpos、mb_striposはマルチバイト対応だけのため、割愛
str_contains
$str = "hogemaru";
var_dump(str_contains($str, "hoge")); // bool(true)
文字列を別の文字列で置換したい
概要
正規表現を使用した複雑な置換が不要であれば、preg_replaceではなく、str_replaceが推奨。
メソッド名 | 内容 | 返り値 | 補足 |
str_replace | 検索文字列に一致したすべての文字列を置換する | 置換後の文字列あるいは配列を返す | 返り値とは別に、マッチして置換が行われた回数を取得することが可能(第四引数) |
preg_replace | 正規表現検索に一致した文字列を置換をする | 置換後の文字列あるいは配列を返す。エラーの場合はnullを返す | 返り値とは別に、マッチして置換が行われた回数を取得することが可能(第五引数) |
具体例
str_replace
$mixedの$searchと一致する文字列を$replaceに置き換える
$search = '*';
$mixed = 'c*o*m*p*o*s*e*r';
$replace = '';
var_dump(str_replace($search, $replace, $mixed));
preg_replace
str_replaceの正規表現版なので割愛
文字列から正規表現に一致する文字列のみを取り出したい
preg_match_allという関数もあるが、こちらは、正規表現にマッチしたのち、そのマッチした文字列の後から検索が続行される
メソッド名 | 内容 | 返り値 | 補足 |
preg_match | 正規表現によるマッチングを行う |
| 返り値とは別に、マッチした文字列が格納された配列を取得することが可能(第三引数) $matches[0]とすると、マッチしたテキストが取得できるので便利 |
具体例
preg_match
一致する文字列が存在するので、返り値には1が、$matchesには正規表現に一致したstring("leefe777")が返る
$string = "fjeife00000leefe777";
// 直前の文字が0以外の文字1回以上の連続のあとに、7が3回連続する文字列に一致する
$result = preg_match('/[^0]+[7]{3}/', $string, $matches);
var_dump($result); // int(1)
var_dump($matches[0]); // string("leefe777")
文字列を大文字から小文字に変換したい(またはその逆)
メソッド名 | 内容 | 返り値 | 補足 |
strtolower | アルファベット部分をすべて小文字に | 小文字にした文字列 | - |
mb_strtolower | 〃 | 〃 | strtolowerのマルチバイト対応版で、全角のアルファベットも小文字に変換可能 |
strtoupper | アルファベット部分をすべて大文字に | 大文字にした文字列 | - |
mb_strtoupper | 〃 | 〃 | strtoupperのマルチバイト対応版で、全角のアルファベットも大文字に変換可能 |
具体例
strtolower、strtoupperは割愛
mb_strtolower
$string = "AIUeO";
var_dump(mb_strtolower($string)); // string(5) "aiueo"
mb_strtoupper
$string = "AIUeO";
var_dump(mb_strtoupper($string)); // string(5) "AIUEO"
日本語文字列の「半角」-「全角」変換を行いたい
オプションの一覧はこちら
https://www.php.net/manual/ja/function.mb-convert-kana.php
メソッド名 | 内容 | 返り値 | 補足 |
mb_convert_kana | カナを("全角かな"、"半角かな"等に)変換する | 変換後の文字列 | どのように変換した以下はオプションで指定していする。 例えば、以下のようにすると、全角カタカナ・英数字を半角カタカナ・英数字に変換します。
|
具体例
mb_convert_kana
$string = "ABCDEabcdefghij01234ァアィイ";
var_dump(mb_convert_kana($string, 'kna')); // string(32) "ABCDEabcdefghij01234ァアィイ"
文字列を特定の文字列で分割して配列に変換したい
メソッド名 | 内容 | 返り値 | 補足 |
explode | 文字列を区切り文字列で分割して配列にする | 分割した後の文字列の配列 | - |
具体例
explode
$string = "PHP,Ruby,Java,Python";
var_dump(explode(",", $string));
array(4) {
[0]=>
string(3) "PHP"
[1]=>
string(4) "Ruby"
[2]=>
string(4) "Java"
[3]=>
string(6) "Python"
}
文字列のバイト数を取得したい
メソッド名 | 内容 | 返り値 | 補足 |
strlen | 文字列のバイト数を取得する | 空の文字列だった場合は0を返す | - |
mb_strlen | 〃 | 〃 | strlenのマルチバイト対応版で |
var_dump(strlen("PHP"));
var_dump(strlen(1));
var_dump(strlen("false"));
var_dump(strlen(0));
var_dump(strlen(null));
var_dump(strlen(false));
var_dump(strlen(""));
int(3)
int(1)
int(5)
int(1)
int(0)
int(0)
int(0)
※null, false, ""の扱いには注意(0が返る)
まとめ
いかがでしたでしょうか。本記事では、PHPにおける文字列メソッドまとめ(ユースケース別でよく使用するものについて紹介しています。開発を行う上で文字列の扱いを理解しておくことは必須と思いますので、ぜひ参考にしてみてください。