0Pricing
PHP Academy · レッスン

preg_replaceでテキストを置換する

置換文字列と後方参照を使ってマッチした部分を置き換えます

「preg_replaceでテキストを置換する」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

preg_replace()のシグネチャ

preg_replace($pattern, $replacement, $subject)は、すべてのマッチを置換したsubjectを返します。複数の文字列を一度に処理するには、subjectの配列を渡します。

単純な置換

文字列内のすべての数字をアスタリスクに置換します。

<?php
$result = preg_replace('/\d/', '*', 'Order #12345');
echo $result; // "Order #*****"

置換における後方参照

$1、$2など(または\1、\2)を使用すると、キャプチャグループを置換文字列に挿入できます。

<?php
$result = preg_replace('/^(\w+)\s(\w+)$/', '$2, $1', 'John Smith');
echo $result; // "Smith, John"

名前付き後方参照

名前付きキャプチャグループは、置換文字列内で${name}として参照できます。

<?php
$result = preg_replace(
    '/(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})/',
    '${day}/${month}/${year}',
    '2025-06-15'
);
echo $result; // "15/06/2025"

複数のパターンの置換

パターンと置換文字列の配列を渡すと、複数のルールを一度に処理できます。

<?php
$result = preg_replace(
    ['/foo/', '/bar/'],
    ['baz',   'qux'],
    'foo and bar'
);
echo $result; // "baz and qux"

limitパラメーター

4番目のパラメーターで、置換を行う回数を制限します。無制限(デフォルト)にするには-1を渡します。

<?php
$result = preg_replace('/a/', 'X', 'banana', 2);
echo $result; // "bXnXna"

countパラメーター

5番目の変数を渡すと、実行された置換の件数を受け取れます。

<?php
$count  = 0;
$result = preg_replace('/e/', '3', 'hello everyone', -1, $count);
echo "$count replacements"; // "3 replacements"

preg_replace_callback()

置換ロジックが複雑な場合は、preg_replace_callback()を使用して、クロージャーで各マッチを処理します。

<?php
$result = preg_replace_callback(
    '/\d+/',
    fn($m) => $m[0] * 2,
    'Item: 5, Qty: 3'
);
echo $result; // "Item: 10, Qty: 6"

HTMLタグを除去する例

単純な正規表現ですべてのHTMLタグを削除します(本番環境ではstrip_tags()を使用してください)。

<?php
$clean = preg_replace('/<[^>]+>/', '', '<b>Hello</b> World');
echo $clean; // "Hello World"

文字列をスラッグ化する

タイトルをURLで安全に使用できるスラッグに変換します。

<?php
function slugify(string $s): string {
    $s = strtolower($s);
    $s = preg_replace('/[^a-z0-9]+/', '-', $s);
    return trim($s, '-');
}
echo slugify('Hello World!'); // "hello-world"

パフォーマンスに関する注意

パターンは単純に保ち、壊滅的なバックトラッキングを避けます。複雑な変換では、複数のpreg_replace呼び出しを重ねるのではなく、preg_replace_callbackを使用します。

str_replaceとの違い

単純なテキスト置換ではstr_replaceのほうが高速です。正規表現パターンの機能が必要な場合にのみpreg_replaceを使用します。

まとめ

preg_replaceはパターンに一致するすべての箇所を置換します。キャプチャグループを再利用するには後方参照($1)を使用します。置換ロジックが動的な場合はpreg_replace_callbackを使用します。

クイックチェック

preg_replaceの置換文字列で、最初のキャプチャグループをどのように参照しますか?

よくある質問

「preg_replaceでテキストを置換する」レッスンは無料ですか?

はい。「preg_replaceでテキストを置換する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「preg_replaceでテキストを置換する」で何を学びますか?

置換文字列と後方参照を使ってマッチした部分を置き換えます ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「preg_replaceでテキストを置換する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 正規表現構文の基礎
  2. preg_matchでマッチングする
  3. preg_replaceでテキストを置換する
  4. 分割と実践的なパターン
← PHP Academyに戻る