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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 正規表現構文の基礎
- preg_matchでマッチングする
- preg_replaceでテキストを置換する
- 分割と実践的なパターン