Masayan tech blog.

  1. ブログ記事一覧>
  2. 【PHP】よく使用する文字列メソッドまとめ(ユースケース別)

【PHP】よく使用する文字列メソッドまとめ(ユースケース別)

公開日

環境

  • 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 を返す

大文字小文字区別。
strstrというメソッドもあり、こちらは文字列が存在する位置からその文字列の終わりまでの文字列を返す

stripos

大文字小文字区別しない。
stristrというメソッドもあり、こちらは文字列が存在する位置からその文字列の終わりまでの文字列を返す

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

正規表現によるマッチングを行う

  • マッチした場合は1
  • マッチしなかった場合は0
  • 失敗した場合はfalse

返り値とは別に、マッチした文字列が格納された配列を取得することが可能(第三引数)

$matches[0]とすると、マッチしたテキストが取得できるので便利

具体例

preg_match

一致する文字列が存在するので、返り値には1が、$matchesには正規表現に一致したstring("leefe777")が返る

$string = "fjeife00000leefe777";

// 直前の文字が0以外の文字1回以上の連続のあとに、73回連続する文字列に一致する
$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("文字列", 'kna')

具体例

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における文字列メソッドまとめ(ユースケース別でよく使用するものについて紹介しています。開発を行う上で文字列の扱いを理解しておくことは必須と思いますので、ぜひ参考にしてみてください。