PHPの文字列操作(連結・置換・フォーマット)を完全ガイド!初心者でもわかる文字列の基本
新人
「PHPで文字列を扱う方法を知りたいのですが、基本から教えてもらえますか?」
先輩
「PHPでは文字列を扱う方法がいくつかあります。まずは基本的な考え方から説明していきますね。」
新人
「お願いします!」
1. PHPの文字列とは?
PHPの文字列は、テキストデータを表すためのデータ型の一つです。プログラム内で文字や文章を扱うときに使用します。
例えば、「Hello, World!」のようなテキストや、ユーザーが入力した情報を処理するときに使われます。
2. PHPでの文字列の扱い方(シングルクォートとダブルクォートの違い)
PHPでは、文字列をシングルクォート('
)またはダブルクォート("
)で囲んで表します。
シングルクォートとダブルクォートの主な違いは、変数の展開ができるかどうかです。
シングルクォート('
)を使った場合
シングルクォートでは、文字列の中で変数をそのままの文字として扱います。
$name = '太郎';
echo 'こんにちは、$name さん';
上記のコードを実行すると、出力は以下のようになります。
こんにちは、$name さん
ダブルクォート("
)を使った場合
ダブルクォートでは、変数が文字列内で展開され、実際の値に置き換わります。
$name = '太郎';
echo "こんにちは、$name さん";
この場合、変数の値が展開され、以下のように表示されます。
こんにちは、太郎 さん
3. 文字列の連結方法(`.` を使った連結)
PHPでは、文字列を連結するときに.
(ドット演算子)を使います。
例えば、次のように2つの文字列を連結できます。
$first = 'こんにちは、';
$second = '太郎さん';
$message = $first . $second;
echo $message;
上記のコードを実行すると、以下のように表示されます。
こんにちは、太郎さん
複数の文字列を連結する
複数の文字列を連結するときも、.
を使います。
$greeting = 'こんにちは';
$name = '太郎';
$end = 'さん';
$message = $greeting . '、' . $name . $end . '!';
echo $message;
この場合の出力結果は次のようになります。
こんにちは、太郎さん!
代入しながら連結する(.=
演算子)
連結しながら代入する場合、.=
演算子を使います。
$message = 'こんにちは';
$message .= '、太郎さん!';
echo $message;
このコードの実行結果は以下の通りです。
こんにちは、太郎さん!
4. 文字列の置換(str_replace を使った文字の置き換え)
PHPでは、特定の文字列を別の文字列に置き換える場合にstr_replace
関数を使います。
例えば、「こんにちは、太郎さん!」という文章の「太郎」を「花子」に変更する場合、以下のように書きます。
$text = 'こんにちは、太郎さん!';
$new_text = str_replace('太郎', '花子', $text);
echo $new_text;
上記のコードを実行すると、次のように表示されます。
こんにちは、花子さん!
複数の単語を一度に置換する
str_replace
は、配列を使って複数の単語を一度に置換することもできます。
$text = '今日は晴れですね。とても暑いです。';
$new_text = str_replace(['晴れ', '暑い'], ['雨', '涼しい'], $text);
echo $new_text;
このコードの実行結果は以下の通りです。
今日は雨ですね。とても涼しいです。
5. 文字列の検索(strpos を使った文字の検索)
PHPでは、特定の文字列が含まれているかどうかを調べるためにstrpos
関数を使います。
例えば、「PHPは便利な言語です。」という文章の中に「便利」という単語が含まれているかどうかを確認するには、次のように書きます。
$text = 'PHPは便利な言語です。';
$position = strpos($text, '便利');
if ($position !== false) {
echo '「便利」という単語は ' . $position . ' 文字目にあります。';
} else {
echo '「便利」という単語は含まれていません。';
}
上記のコードを実行すると、次のように表示されます。
「便利」という単語は 3 文字目にあります。
特定の単語が含まれているか判定する
strpos
を使って、文字列が含まれているかどうかを判定することもできます。
$text = 'PHPはとても簡単な言語です。';
if (strpos($text, '簡単') !== false) {
echo 'この文章には「簡単」が含まれています。';
} else {
echo 'この文章には「簡単」が含まれていません。';
}
このコードの実行結果は以下の通りです。
この文章には「簡単」が含まれています。
6. 部分文字列の取得(substr を使った一部の文字列の取り出し)
PHPでは、文字列の一部分を取り出すためにsubstr
関数を使います。
例えば、「こんにちは、世界!」という文字列の最初の5文字を取得する場合、次のように書きます。
$text = 'こんにちは、世界!';
$substring = substr($text, 0, 5);
echo $substring;
このコードを実行すると、次のように表示されます。
こんにちは
文字列の末尾から取得する
負の値を指定すると、文字列の末尾から取得できます。
$text = 'こんにちは、世界!';
$substring = substr($text, -3);
echo $substring;
このコードの実行結果は以下の通りです。
世界!
特定の範囲を取得する
開始位置と長さを指定して、一部分だけを取得することもできます。
$text = 'プログラミングは楽しい!';
$substring = substr($text, 6, 4);
echo $substring;
このコードを実行すると、次のように表示されます。
ミング
7. 文字列のフォーマット(printfやsprintfを使った整形)
PHPでは、数値や文字列を特定のフォーマットに整形するためにprintf
やsprintf
関数を使います。
printfを使った文字列フォーマット
printf
関数を使うと、フォーマットを指定して文字列を出力できます。
$price = 1500;
printf("商品の価格は %d 円です。", $price);
このコードを実行すると、以下のように表示されます。
商品の価格は 1500 円です。
また、小数点以下の桁数を指定することもできます。
$rate = 3.14159;
printf("円周率は %.2f です。", $rate);
このコードを実行すると、以下のように表示されます。
円周率は 3.14 です。
sprintfを使った文字列の作成
sprintf
は、printf
と同じフォーマット指定が使えますが、文字列を返す点が異なります。
$name = '太郎';
$age = 25;
$message = sprintf("私の名前は %s で、%d 歳です。", $name, $age);
echo $message;
このコードを実行すると、以下のように表示されます。
私の名前は 太郎 で、25 歳です。
8. 文字列のトリミング(trim を使った余分なスペースの削除)
PHPでは、文字列の前後にある不要な空白を削除するためにtrim
関数を使います。
trimを使った空白の削除
以下の例では、文字列の前後の空白を削除しています。
$text = " こんにちは ";
$trimmed_text = trim($text);
echo "[$trimmed_text]";
このコードの実行結果は以下の通りです。
[こんにちは]
ltrimとrtrimを使った部分的なトリミング
前後どちらかの空白だけを削除するには、ltrim
(左側)またはrtrim
(右側)を使います。
$text = " こんにちは ";
$left_trimmed = ltrim($text);
$right_trimmed = rtrim($text);
echo "[$left_trimmed]\n";
echo "[$right_trimmed]";
このコードの実行結果は以下のようになります。
[こんにちは ]
[ こんにちは]
9. 文字列操作の活用例(ユーザー入力の整形、ログの出力など)
文字列操作は、実際の開発においてさまざまな場面で活用されます。
ユーザー入力の整形
ユーザーが入力したデータを整形する場合、trim
やstr_replace
を活用できます。
$input = " こんにちは! ";
$clean_input = trim($input);
echo $clean_input;
このコードを実行すると、次のように表示されます。
こんにちは!
ログの出力
エラーログやアクセスログを整形して記録することも重要です。
$date = date("Y-m-d H:i:s");
$message = "ユーザーがログインしました。";
$log = sprintf("[%s] %s", $date, $message);
file_put_contents("log.txt", $log . PHP_EOL, FILE_APPEND);
上記のコードを実行すると、log.txt
に次のようなログが記録されます。
[2025-02-28 14:30:00] ユーザーがログインしました。
データの一部をマスキングする
パスワードや個人情報を部分的にマスキングすることも可能です。
$email = "example@example.com";
$masked_email = substr_replace($email, "****", 3, 4);
echo $masked_email;
このコードを実行すると、次のように表示されます。
exa****@example.com