PHPの文字列操作とは?よく使う関数と使い方を解説

PR PHP

PHPの文字列操作とは?よく使う関数と使い方を解説

💡 この記事でわかること

  • 文字数の数え方(strlenmb_strlen の違い)
  • 空白を取り除く trim、置き換える str_replace
  • 一部を取り出す substr、含まれるか調べる str_contains
  • 分割 explode と連結 implode、数値の整形 number_format
  • 日本語(マルチバイト)を扱うときの mb_ 系関数の注意点

1. 文字列操作とは?

文字列操作とは、
👉 文字列の長さを調べたり、一部を取り出したり、置き換えたりすることです。

💡 PHPには文字列用の関数が数百種類ありますが、実際によく使うのは十数個ほどです。この記事では、初心者がまず覚えておきたいものを厳選して紹介します。連結(.)やダブルクォートでの変数展開など、文字列の基本はデータ型の記事も参考にしてください。

👉 PHPのデータ型(文字列・数値・型変換)についての記事はこちら


2. 長さ・大文字小文字

<?php
echo strlen("Hello");      // 5
echo mb_strlen("こんにちは");  // 5

echo strtoupper("hello");   // HELLO
echo strtolower("WORLD");   // world

👉 日本語の文字数を数えるときは strlen() ではなく mb_strlen() を使いますstrlen("こんにちは") はバイト数の 15 を返してしまいます(UTF-8では日本語1文字が3バイトのため)。


3. 空白の除去・文字の置き換え

<?php
echo trim("  hello  ");        // "hello"(前後の空白を除去)
echo str_replace("犬", "猫", "犬と犬が鳴く");  // "猫と猫が鳴く"
  • trim($s):前後の空白・改行を除去(ltrim は左だけ、rtrim は右だけ)
  • str_replace(検索, 置換, 対象):一致する部分をすべて置き換える

💡 フォームの入力値は、まず trim() で前後の空白を取り除いてから扱うのが定番です。


4. 一部を取り出す・含まれるか調べる

<?php
echo substr("abcdef", 1, 3);       // "bcd"(1文字目から3文字)
echo mb_substr("あいうえお", 0, 3);  // "あいう"(日本語は mb_substr)

var_dump(str_contains("user@example.com", "@"));   // bool(true)
var_dump(str_starts_with("photo.png", "photo"));   // bool(true)
var_dump(str_ends_with("photo.png", ".png"));       // bool(true)

👉 「含まれるか」を調べるなら str_contains()(PHP 8.0以降)が分かりやすくおすすめです。古いコードでよく見る strpos() は「見つかった位置」を返すため、先頭で見つかると 0 が返り、if (strpos(...)) だと false と区別できないという注意点があります。


5. 分割(explode)・連結(implode)

<?php
// 文字列 → 配列
$parts = explode(",", "りんご,みかん,ぶどう");
print_r($parts);   // Array ( [0] => りんご [1] => みかん [2] => ぶどう )

// 配列 → 文字列
$csv = implode(" / ", $parts);
echo $csv;   // りんご / みかん / ぶどう

👉 explode(区切り文字, 文字列) で分割、implode(つなぎ文字, 配列) で連結します。CSVのような区切りデータを扱うときの基本です。

👉 PHPの配列・連想配列についての記事はこちら


6. 数値の整形・改行の変換

<?php
echo number_format(1234567);        // 1,234,567(3桁区切り)
echo number_format(1234.5, 2);      // 1,234.50(小数2桁)

echo sprintf("在庫%03d個", 7);      // 在庫007個(0埋め)

echo nl2br("1行目\n2行目");          // 改行が <br> タグに変換される
  • number_format($n):金額などを3桁区切りにする
  • sprintf(書式, 値):桁数や小数点をそろえた文字列を作る
  • nl2br($s):改行を <br> に変換。テキストエリアの入力をそのまま表示したいときに使う

💡 フォームの入力値を nl2br() で表示するときは、先に htmlspecialchars() を通してから nl2br() を掛けます(順番を逆にすると <br> まで無効化されてしまいます)。

👉 PHPのフォーム処理・htmlspecialcharsについての記事はこちら


7. 日本語(マルチバイト)を扱うときの注意

👉 PHPの多くの文字列関数は「1文字 = 1バイト」を前提にしています。UTF-8では日本語1文字が3バイトなので、そのまま使うと文字数がずれたり、文字が途中で切れて文字化けしたりします。

バイト単位(英数字向け)文字単位(日本語も安全)
strlen()mb_strlen()
substr()mb_substr()
strtoupper() / strtolower()mb_strtoupper() / mb_strtolower()
strpos()mb_strpos()

💡 日本語が混ざる可能性があるなら、はじめから mb_ が付いた関数を選んでおくと安心ですtrim()str_replace()explode()str_contains() は日本語でもそのまま使えます。


8. よく使う文字列関数 早見表

関数できること
mb_strlen($s)文字数を数える
trim($s)前後の空白・改行を除去する
str_replace($a, $b, $s)文字を置き換える
mb_substr($s, $start, $len)一部を取り出す
str_contains($s, $needle)含まれるか(true / false)
explode($sep, $s) / implode($glue, $arr)分割 / 連結
number_format($n)3桁区切りにする
nl2br($s)改行を <br> に変換する
htmlspecialchars($s, ENT_QUOTES, "UTF-8")HTMLとして安全な文字に変換する

9. まとめ

  • 文字数は mb_strlen()、一部を取り出すのは mb_substr()(日本語なら mb_ 付き)
  • 空白除去は trim()、置き換えは str_replace()
  • 含まれるか調べるのは str_contains()(strpos()0 / false の罠に注意)
  • 分割・連結は explode() / implode()、金額は number_format()
  • 入力値を表示するときは htmlspecialchars()、そのあと必要なら nl2br()

👉 関数名を全部覚える必要はありません。「やりたいこと(数える・取り出す・置き換える)」から早見表で引けるようにしておき、細かい使い方は公式マニュアルで確認する、という進め方で十分です。

-PHP
-, , ,