
【6日でできるPHP入門】文字列に関する関数
Web アプリではユーザー名の加工、URL 生成、テンプレートの差し替えなど「文字列操作」が欠かせません。PHP にはマルチバイト対応の mb_* 系から正規表現まで多彩な関数が標準装備されています。ここでは実用頻度の高い文字列関数を体系的に学び、実行例で挙動を確認しながら“知っておくと即戦力になるテクニック”を身に付けましょう。

1.マルチバイト対応の基礎関数
1.1. 文字列の長さを取得 ― mb_strlen
関数 | 主な用途 | 書式 |
---|---|---|
mb_strlen() | 文字列の長さ(文字数)を取得 | int mb_strlen(string $str, string $enc = mb_internal_encoding()) |
1.2. 部分文字列を取り出す ― mb_substr
関数 | 主な用途 | 書式 |
---|---|---|
mb_substr() | 指定範囲の部分文字列を取得 | string mb_substr(string $str, int $start, int $len = null) |
1.3. 文字列検索 ― mb_strpos
関数 | 主な用途 | 書式 |
---|---|---|
mb_strpos() | 部分文字列の位置を返す | `int |
ファイル名: lesson48_1.php
<?php
// 文字列の設定
$str = "PHPとJavaScriptの勉強";
echo "\$str=[{$str}]<br>";
// 文字列の長さ
$len = mb_strlen($str);
echo "\$strの長さは{$len}文字です。<br>";
// 5文字目から10文字切り取る
$part = mb_substr($str, 4, 10);
echo "\$strを5文字目から10文字切り取ると「{$part}」です。<br>";
// 「勉強」を検索
$kw = "勉強";
$pos = mb_strpos($str, $kw);
echo "「{$kw}」は、\$strの{$pos}文字目に含まれます。<br>";
?>
実行結果

2.置換とパターンマッチ
2.1. 文字列置換 ― str_replace
関数 | 主な用途 | 書式 |
---|---|---|
str_replace() | 文字列内の一部を置き換える | string str_replace(mixed $search, mixed $replace, mixed $subject) |
2.2. 正規表現置換 ― preg_replace
関数 | 主な用途 | 書式 |
---|---|---|
preg_replace() | 正規表現パターンで置換 | string |
ファイル名: lesson48_2.php
<?php
$str = "PHPとJavaScriptの勉強";
// 部分置換
$new1 = str_replace("PHP", "Go", $str);
echo "\$strの[PHP]を[Go]にすると「{$new1}」になります。<br>";
// 正規表現で先頭3文字を小文字化
$new2 = preg_replace('/^.{3}/u', strtolower(mb_substr($str, 0, 3)), $str);
echo "先頭3文字を小文字にすると「{$new2}」になります。<br>";
?>
実行結果

プログラム全体の意味
preg_replace('/^.{3}/u', strtolower(mb_substr($str, 0, 3)), $str);
この一行は、「$strの先頭3文字」を小文字に変換し、その結果で元の先頭3文字を置き換えた新しい文字列を返します。
それぞれの部分を解説
部分 | 説明 |
---|---|
preg_replace('/^.{3}/u', ..., $str) | 正規表現で「先頭の3文字」に一致した部分を、指定した文字列で置換する関数。 |
'/^.{3}/u' | 正規表現パターン。 「^」は行頭、「.」は任意の1文字、「{3}」で3文字、「u」はUTF-8対応フラグ。 |
strtolower(mb_substr($str, 0, 3)) | $strの先頭3文字を抜き出して小文字に変換する部分。 |
$str | 置換を行う元の文字列。 |
詳しく分解して解説
1. mb_substr($str, 0, 3)
$str
の先頭から3文字を抜き出す。mb_substr
はマルチバイト文字列(日本語なども含め)に対応しているので、日本語や絵文字でも「3文字」を正確に取得できる。
2. strtolower(...)
- 上で抜き出した3文字を小文字に変換。
- 例:
ABC
→abc
3. preg_replace('/^.{3}/u', ..., $str)
- 正規表現
/^.{3}/u
で先頭3文字にマッチ。 - その部分を、先ほど小文字化した文字列で置換する。
- 例:
・$str = 'PHPTest'
・mb_substr($str, 0, 3)
→'PHP'
・strtolower(...)
→'php'
・先頭3文字を'php'
で置換 →'phpTest'
になる
3.実務で役立つ応用例
3.1. スラッグ生成
function slugify(string $title): string {
// 半角へ変換 → 英数字以外をハイフンに → 連続ハイフンを 1 つに
$tmp = mb_strtolower($title);
$tmp = preg_replace('/[^\p{L}\p{N}]+/u', '-', $tmp);
return trim($tmp, '-');
}
echo slugify("オブジェクト指向 PHP 入門"); // オブジェクト指向-php-入門
3.2. メールアドレス簡易検証
function is_valid_mail(string $mail): bool {
return (bool)preg_match('/^[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}$/', $mail);
}
var_dump(is_valid_mail("user@example.com")); // bool(true)
まとめ
- *mb_ 系**はマルチバイト文字列でも安全に長さ・切り出し・検索ができる。
str_replace
と正規表現系preg_replace
を使い分けることで、単純置換から高度なパターン置換まで網羅可能。- 文字列関数を組み合わせれば、スラッグ生成や入力バリデーションなど実務タスクを簡潔に実装できる。