【PHP】レッスン1-05:文字列を理解しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:文字列

この記事の練習問題を解くために必要な知識:
PHPタグ入力と出力コメントの書き方変数と定数データ型とキャスト算術演算子文字列文字列の連結と埋め込み乱数生成

<<前のページ PHP記事一覧 次のページ>>

PHPの「文字列」とは

この章ではPHPにおける「文字列」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。




プログラミングにおいて、文字列は最も基本的かつ重要なデータ型の一つです。

PHPでは文字列を扱う方法が非常に豊富であり、初心者でも簡単に操作できるよう設計されています。

本記事では、PHPで文字列を扱う際の基本的な方法について学んでいきます。

文字列とは?

文字列とは文字の集まりを指します。PHPでは文字列はアルファベット、数字、記号、空白文字などを含むことができます。

たとえば、以下のようなデータが文字列と呼ばれます。

"Hello, World!" // ダブルクォーテーションで囲った文字列
"12345"         // これも文字列。""で囲わないと数値になる
'PHP is great!' // シングルクォーテーションで囲った文字列

PHPで文字列を扱う際にはダブルクォーテーション("")またはシングルクォーテーション('')で囲む必要があります。

この2つには違いがありますが、それについては次のセクションで詳しく解説します。

ダブルクォーテーションとシングルクォーテーションの違い

ダブルクォーテーションとシングルクォーテーションの違いを解説します。

ダブルクォーテーション ("")

ダブルクォーテーションで囲った文字列は、中に変数を埋め込むことができます。

$name = "PHP";
echo "Hello, $name!"; // 出力: Hello, PHP!

シングルクォーテーション ('')

文字列をそのまま出力します。変数の埋め込みは行われません。

$name = "PHP";
echo 'Hello, $name!'; // 出力: Hello, $name!

この文字列中への変数の埋め込みについては、次の章で詳しく解説します。

文字列の操作例

文字列操作の便利な方法を3つ紹介します。

1. var_dump関数で文字列の確認

PHPでは変数の中身を確認するためにvar_dumpという関数を使います。

この関数は変数の「データ型」と「値」を表示してくれます。文字列の内容が正しく設定されているか確認したい場合に便利です。

$text = "Hello, PHP!"; // 文字列を代入
var_dump($text);       // データ型と内容を出力

このコードを実行すると以下のように出力されます。

string(12) "Hello, PHP!"
  • stringはデータ型が「文字列」であることを示します。
  • (12)はこの文字列が12文字の長さであることを示します。スペースや記号も文字としてカウントされます。
  • "Hello, PHP!"は実際の文字列の値です。

2. trim関数で余分な空白を削除

trim関数は文字列の「先頭」と「末尾」にある余分な空白を取り除きます。

データ入力フォームなどでユーザーが空白を含むデータを入力してしまった場合に役立ちます。

$input = "  Hello, World!  "; // 余分な空白を含む文字列
$trimmed = trim($input);      // trim関数で空白を削除
echo $trimmed;                // 結果を出力

このコードを実行すると以下のように出力されます。

Hello, World!
  • $inputの値には、スペースが先頭と末尾に含まれています。
  • trim関数が空白を取り除き、文字列の中央のスペース(例: “Hello, World!” の中の空白)はそのまま保持されます。
  • この処理は、入力データをクリーンにする際に非常に便利です。

3. strlen関数で文字列の長さを取得

strlen関数は文字列の「長さ」を返します。

ここでの長さは、文字列に含まれる文字の数(空白や記号も含む)です。

$text = "PHP is awesome!";
$length = strlen($text); // 文字列の長さを取得
echo "文字列の長さは: $length 文字です。";

このコードを実行すると以下のように出力されます。

文字列の長さは: 15 文字です。
  • strlen関数は文字列内のすべての文字をカウントします。スペース、記号、アルファベットがすべて含まれます。
  • 初心者にとっては「文字数をカウントできる」という単純で実用的な機能です。

補足: 文字列が日本語やその他のマルチバイト文字を含む場合、strlenでは正しくカウントされないことがあります。この場合はmb_strlen関数を使うと良いです。

$text = "こんにちは";
echo mb_strlen($text); // 出力: 5

4. substr関数で一部を切り取る

substr関数は、文字列の中から指定した位置から指定した長さの部分を取り出します。

$text = "Hello, PHP!"; // 文字列を代入
$subText = substr($text, 7, 3); // 7文字目から3文字を切り取る
echo $subText; // 結果を出力

このコードを実行すると以下のように出力されます。

PHP
  • 最初の引数は対象の文字列(例: $text)。
  • 2番目の引数は切り取りを始める位置(0から数えます)。
  • 3番目の引数は切り取る長さです。

この場合、文字列「Hello, PHP!」の7文字目から3文字分が切り取られ、「PHP」という部分が得られます。

日本語の文字列を切り取る

日本語のようなマルチバイト文字を扱う場合は、substrではなくmb_substr関数を使用する必要があります。

mb_substrは日本語を正しく扱えるため、文字化けを防ぐことができます。

$text = "こんにちは、PHP!"; // 日本語を含む文字列
$subText = mb_substr($text, 5, 3); // 5文字目から3文字を切り取る
echo $subText; // 結果を出力

このコードを実行すると以下のように出力されます。

PHP

まとめ

substr関数は英数字を扱う場合に便利で、mb_substr関数は日本語などのマルチバイト文字を扱う場合に必須です。

用途に応じて使い分けることで、文字列操作をより柔軟に行うことができます。

ぜひ、自分のコードでも試してみてください!

まとめ

本記事ではPHPの文字列の基本的な構文と使用例について学びました。

ダブルクォーテーションとシングルクォーテーションの違いや、var_dumptrimを用いた文字列操作の実例を通じて、文字列の扱い方の基礎を理解できたと思います。

次回は文字列の連結と埋め込みについて詳しく解説します。

文字列の練習問題:trimvar_dumpで文字列を操作しよう

ユーザーが入力した文字列を処理するプログラムを作成しましょう。

このプログラムでは、まず入力された文字列を取得し、その内容をそのまま出力します。

次にtrim関数を用いて入力文字列から余分な空白を取り除き、整形された結果を出力します。

さらに、var_dumpを使用して文字列のデータ型と長さを確認しましょう。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • 標準入力から文字列を取得し、変数 $input に格納すること。
  • 入力された文字列をそのまま出力すること。
  • trim関数を使用して、文字列の先頭と末尾の空白を削除し、その結果を $trimmed に格納すること。
  • $input$trimmed の両方を var_dump で出力すること。
  • 入力された文字列と処理後の文字列を区別できるよう、適切な説明を付けること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

文字列(アルファベット)を入力してください:    Hello, PHP!   
入力された文字列(未処理): string(15) "   Hello, PHP!   "
trimで処理された文字列 : string(11) "Hello, PHP!"

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:標準入力から文字列を取得するためのプロンプトを出力
2:標準入力から文字列を取得し、変数$inputに格納
3:trim関数で文字列の前後の空白を削除し、結果を変数$trimmedに格納
4:文字列「入力された文字列(未処理): 」を出力
5:var_dump関数で$inputの内容を出力
6:文字列「trimで処理された文字列 : 」を出力
7:var_dump関数で$trimmedの内容を出力

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

<?php
// 1. 標準入力から文字列を取得します。
echo "文字列(アルファベット)を入力してください: ";
/* 【穴埋め問題1】
標準入力から文字列を受け取り、変数$inputに格納するコードを書いてください。
*/

// 2. 入力された文字列をtrimで空白を削除
/* 【穴埋め問題2】
trim関数を使用して、文字列の前後の空白を削除し、結果を変数$trimmedに格納するコードを書いてください。
*/

// 3. var_dumpで元の文字列とtrim後の文字列を確認
echo "入力された文字列(未処理): ";
/* 【穴埋め問題3】
var_dumpを使用して、$inputの内容を出力するコードを書いてください。
*/

echo "trimで処理された文字列 : ";
/* 【穴埋め問題4】
var_dumpを使用して、$trimmedの内容を出力するコードを書いてください。
*/

以上がこの問題の穴埋めコードです。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



練習問題の解答と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

<?php
// 1. 標準入力から文字列を取得します。
echo "文字列(アルファベット)を入力してください: ";
$input = fgets(STDIN); // 標準入力から文字列を受け取る

// 2. 入力された文字列をtrimで空白を削除
$trimmed = trim($input);

// 3. var_dumpで元の文字列とtrim後の文字列を確認
echo "入力された文字列(未処理): ";
var_dump($input) . PHP_EOL;

echo "trimで処理された文字列 : ";
var_dump($trimmed) . PHP_EOL;

正解コードの解説

今回のコードはユーザーが入力した文字列を処理し、その結果を確認するプログラムです。

文字列を扱うための基本的な機能であるfgetstrimvar_dumpについて学びます。

それでは、コードをブロックごとに解説していきましょう。

標準入力から文字列を取得

echo "文字列(アルファベット)を入力してください: ";
$input = fgets(STDIN); // 標準入力から文字列を受け取る
  • echo: メッセージを画面に表示する関数です。ここではユーザーに入力を促すメッセージ「文字列(アルファベット)を入力してください: 」を表示しています。
  • fgets(STDIN): 標準入力(キーボード)から文字列を取得する関数です。$inputという変数に、ユーザーが入力した内容がそのまま格納されます。
    ポイント: 入力には改行や空白も含まれることがあります。

入力された文字列をtrimで空白を削除

$trimmed = trim($input);

trim: 文字列の先頭や末尾にある余分な空白や改行を削除する関数です。

ここでは$inputに格納された文字列を処理し、結果を$trimmedという変数に格納しています。

  • : 入力が " Hello, PHP! " の場合、trimを適用すると "Hello, PHP!" になります。
  • 重要性: ユーザーが意図しない空白を入力した場合でも、クリーンなデータを扱うことができるようになります。

var_dumpで文字列の詳細を確認

echo "入力された文字列(未処理): ";
var_dump($input);

echo "trimで処理された文字列 : ";
var_dump($trimmed);

var_dump: 変数のデータ型と値を確認する関数です。デバッグや文字列の状態を詳しく知りたいときに使います。

  • $input: ユーザーが入力した文字列(処理前)を表示します。
  • $trimmed: trimで処理された文字列(空白や改行を削除済み)を表示します。

まとめ

このコードではPHPで文字列を扱う基本的な方法を学びました。

  • fgets: 標準入力からデータを取得する方法。
  • trim: 文字列の先頭と末尾の余分な空白を取り除く方法。
  • var_dump: データ型や内容を確認するデバッグツール。

これらの知識を活用することで入力されたデータを正確に処理し、意図しない空白や改行の影響を排除することができます。

PHPの文字列操作の基礎をマスターし、さらに応用力を高めていきましょう!

<<前のページ PHP記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    PHPのテキスト&問題集トップへ戻る
    トップページへ戻る