【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文字を小文字に変換。
  • 例: ABCabc

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 を使い分けることで、単純置換から高度なパターン置換まで網羅可能。
  • 文字列関数を組み合わせれば、スラッグ生成や入力バリデーションなど実務タスクを簡潔に実装できる。