ラボ > PHP:文字関連

PHP 文字列関連のよく使う関数たち

基本、半角文字。全角文字もいけるヤツもあるかもしれないけど、基本、別の関数が用意されている。

作成日:2017-11-17, 更新日:2020-11-30

strpos - 文字列内の部分文字列が最初に現れる場所を見つける

存在するかチェック
if ( strpos(文字列, 検索文字) === false ) {
  // 見つからなかった(※「==」じゃなくて「===」を使う)
}
else {
  // 見つかった(※一番最初は1文字目じゃなく0文字目)
}
出現位置の取得
$str = 'abcdef abcdef';
$pos = strpos($str, 'abc'); // 「$str」から「abc」の位置取得

strrpos - 文字列内の部分文字列が最後に現れる場所を見つける

「str」と「pos」の間にもう一つ「r」が入った「strrpos」。

使いかたは「strpos()」も「strrpos()」も基本、同じ。

▼strpos()とstrrpos()

$str = 'a-ef-bcd-ef-ghi';
$seed = 'ef';

var_dump(strpos($str, $seed));
// int(2)

var_dump(strrpos($str, $seed));
// int(9)

strlen、mb_strlen - 文字列の長さを得る

文字数ではなくバイト数の取得
echo strlen(文字列);
文字数の取得
echo mb_strlen(文字列);

strstr — 文字列が最初に現れる位置以降(or 位置の前)の取得

対象以降
$email  = 'name@example.com';
echo strstr($email, '@'); // 「@」以降を取得するので「@example.com」を表示
対象の前
$email  = 'name@example.com';
echo strstr($email, '@', true); // 「@」の前を取得するので「name」を表示(※PHP5.3.0以降)

str_replace — 検索文字列に一致したすべての文字列を置換する

基本
echo str_replace("%body%", "black", "bodytext=%body%");
// 「%body%」を「black」に置き換えるので「bodytext=%body%」が「bodytext=black」となる
複数の対象を同じものにする
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
echo str_replace($vowels, "", "Hello World of PHP");
// $vowelsで指定された文字を「空白」に置き換えるので「Hll Wrld f PHP」となる。
まとめて置き換え
$phrase  = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy   = array("pizza", "beer", "ice cream");
echo str_replace($healthy, $yummy, $phrase);
// $healthyに対応する位置の$yummyに置き換える(※$healthy[0]は$yummy[0]に置きかえ)
// You should eat pizza, beer, and ice cream every day となる

※第4引数を使うと個数を知ることができる。
PHP 文字列に単語が何個含まれるか確認(str_replace())

substr — 文字列の一部分を返す

※全角を含むときは「mb_substr()」を使う

基本
substr(文字列, 開始位置, 取得バイト)
1文字目以降(最初から全部)
substr(文字列, 0)
2文字目以降
substr(文字列, 1)
1文字目から5文字
substr(文字列, 0, 5)
2文字目から5文字
substr(文字列, 1, 5)
最後の1文字
substr(文字列, -1)
最後から5文字目以降
substr(文字列, -5)
最後から5文字目以降の3文字
substr(文字列, -5, 3)
最後の1文字削除
substr(文字列, 0, -1)
2文字目以降で最後の1文字削除
substr(文字列, 1, -1)