ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
str_replace の基本
PHP で最もよく使う置換関数。検索文字列を置換文字列に変えた新しい文字列を返します。元の文字列は変更されない(戻り値で受け取る)。
<?php
// 基本
$s = str_replace('PHP', 'Python', 'I love PHP');
echo $s; // I love Python
// 配列で複数置換
$s = str_replace(['Mon', 'Tue'], ['月', '火'], 'Mon Tue Wed');
echo $s; // 月 火 Wed
// 置換数を取得
$count = 0;
$s = str_replace('a', 'A', 'banana', $count);
echo "$s ($count)"; // bAnAnA (3)
// 配列の subject に対して一括適用
$arr = str_replace('foo', 'bar', ['foo1', 'foo2', 'baz']);
// → ['bar1', 'bar2', 'baz']
関数比較表
| 関数 | 機能 | 大文字小文字 | 正規表現 |
|---|---|---|---|
str_replace | 単純置換 | 区別する | × |
str_ireplace | 単純置換 | 区別しない | × |
preg_replace | 正規表現置換 | パターン依存 | ○ |
preg_replace_callback | マッチ毎にコールバック | パターン依存 | ○ |
substr_replace | 位置指定置換 | — | × |
strtr | 文字 / ペア対応表で置換 | 区別する | × |
str_ireplace: 大文字小文字を無視
<?php
echo str_replace('php', 'Python', 'I love PHP');
// → I love PHP (置換されない)
echo str_ireplace('php', 'Python', 'I love PHP');
// → I love Python (大文字小文字無視で置換)
preg_replace: 正規表現置換
<?php
// 連続するスペースを 1 つにまとめる
$s = preg_replace('/\s+/', ' ', "hello world\n\nbye");
echo $s; // hello world bye
// 後方参照 $1, $2 でグループ取得
$s = preg_replace('/(\d{4})-(\d{2})-(\d{2})/', '$3/$2/$1', '2026-05-18');
echo $s; // 18/05/2026
// 修飾子: i (大文字小文字無視), u (UTF-8), s (.が改行にマッチ)
$s = preg_replace('/php/i', 'Python', 'PHP and php');
echo $s; // Python and Python
// 削除したいときは置換先を空文字
$s = preg_replace('/<[^>]+>/', '', '<p>Hello <b>World</b></p>');
echo $s; // Hello World
preg_replace_callback: マッチ毎に動的処理
<?php
// 数値だけ 2 倍にする
$s = preg_replace_callback('/\d+/', function ($m) {
return $m[0] * 2;
}, 'a1 b2 c3');
echo $s; // a2 b4 c6
// 大文字化
$s = preg_replace_callback('/\b\w+\b/', function ($m) {
return ucfirst(strtolower($m[0]));
}, 'HELLO world FROM php');
echo $s; // Hello World From Php
substr_replace: 位置指定置換
<?php
// 5 文字目から 3 文字を「XXX」に
echo substr_replace('abcdefghij', 'XXX', 4, 3);
// → abcdXXXhij
// 後ろから (負の値) - 末尾 3 文字を削除
echo substr_replace('abcdefghij', '', -3);
// → abcdefg
// クレジットカード番号マスク
$card = '1234-5678-9012-3456';
echo substr_replace($card, str_repeat('*', 11), 5, 11);
// → 1234-***********3456
strtr: 文字対応表 / ペア辞書で置換
'dogs',
'dogs' => 'cats',
]);
// → I like dogs and cats (str_replace だと両方 'cats' になる)
// HTML エスケープを自前実装するなら
echo strtr('', ['<' => '<', '>' => '>']);
// → <div>
Laravel Str ヘルパ
<?php
use Illuminate\Support\Str;
Str::replace('PHP', 'Python', 'I love PHP'); // I love Python
Str::replaceFirst('a', 'X', 'aaa'); // Xaa
Str::replaceLast('a', 'X', 'aaa'); // aaX
Str::replaceArray('?', ['Mon', 'Tue'], '? ? Wed'); // Mon Tue Wed
// マッチ後の処理(Laravel 9+)
Str::of('foo bar')->replaceMatches('/foo/', fn ($m) => strtoupper($m[0]));
// → FOO bar
よくあるバグと対策
1. 配列順序依存のドミノ置換
<?php
// 期待: cat ↔ dog の入れ替え
echo str_replace(['cat', 'dog'], ['dog', 'cat'], 'cat and dog');
// → dog and dog (cat → dog → cat と 2 段適用される)
// 正しくは strtr を使う
echo strtr('cat and dog', ['cat' => 'dog', 'dog' => 'cat']);
// → dog and cat
2. 改行コードの混在
<?php
// Windows 由来の CRLF と Unix の LF を統一
$s = str_replace(["\r\n", "\r"], "\n", $input);
// 順序が重要: 先に CRLF を LF にしてから残りの CR を LF に
3. マルチバイト文字 / UTF-8
<?php
// preg_replace は u 修飾子をつける
$s = preg_replace('/[ぁ-ん]+/u', '*', 'Hello ひらがな');
echo $s; // Hello *
// str_replace はバイト列で動作するので UTF-8 でも基本 OK だが
// 正規表現を絡めるなら必ず /u をつける
性能の目安
- str_replace > strtr > preg_replace: 単純置換なら str_replace が最速
- 大量データで複数パターンを置換するなら、まとめて strtr の連想配列がベスト
- 正規表現は遅い → 静的な文字列で済むなら使わない
FAQ
Q: 最初の 1 回だけ置換したい
A: preg_replace('/foo/', 'bar', $s, 1) の第 4 引数で回数指定、または Str::replaceFirst。
Q: 大文字小文字無視で正規表現
A: パターンに i 修飾子: preg_replace('/foo/i', 'bar', $s)。
Q: 全角空白を半角に
A: mb_convert_kana($s, "s", "UTF-8") が確実。str_replace でもできますが意図が伝わりにくい。
Q: HTML タグだけ削除したい
A: 自前 preg_replace より strip_tags($s) が安全。
ページの作成
親となるページを選択してください。
ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?
掲示板