PHPの文字列関数まとめ|初級試験でよく出る関数一覧

文字列操作は配列と並んでPHP8技術者認定初級試験の頻出テーマです。 クオートの違いから代表的な文字列関数、マルチバイト関数の注意点まで整理して解説します。

シングルクオートとダブルクオートの違い

ダブルクオート"..."で囲んだ文字列は、内部の変数が展開されます。 シングルクオート'...'ではそのまま文字として扱われます。

$name = '山田';

echo 'こんにちは、$name さん';  // シングルクオート:そのまま出力される
echo "こんにちは、{$name} さん"; // ダブルクオート:変数が展開される

初級試験で頻出の文字列関数

関数 説明
strlen()バイト数を取得する(マルチバイト文字は文字数と一致しない)
substr()指定位置・長さで部分文字列を取り出す
str_replace()文字列を置換する
strpos() / strrpos()文字列の位置を検索する(前方・後方から)
explode() / implode()文字列を配列に分割する/配列を文字列に結合する
trim() / ltrim() / rtrim()前後・前・後の空白(または指定文字)を除去する
sprintf() / printf()書式を指定して文字列を組み立てる
strtoupper() / strtolower()英字を大文字・小文字に変換する
$text = 'Hello PHP';

strlen($text);              // 9(バイト数)
substr($text, 0, 5);        // 'Hello'
str_replace('PHP', '8', $text); // 'Hello 8'
strtoupper($text);          // 'HELLO PHP'

explode() と implode() で配列と相互変換

CSV風の文字列を配列に分割したり、配列を文字列に結合したりする処理は頻出です。 引数の順序(区切り文字が先)を混同しないようにしましょう。

$csv = '田中,佐藤,鈴木';

$names = explode(',', $csv);   // ['田中', '佐藤', '鈴木']
$joined = implode('・', $names); // '田中・佐藤・鈴木'

試験の引っかけポイント

① strpos() の戻り値は === で比較する

文字列の先頭(位置0)で見つかった場合と、見つからずfalseが返る場合を ==で比較すると区別できません(0 == falseはtrue)。 必ず===で比較します。

$text = 'PHP8技術者認定試験';

$pos = strpos($text, 'PHP8'); // 0(先頭で見つかった)

if ($pos === false) {
    echo '見つかりませんでした';
} else {
    echo "位置 {$pos} で見つかりました";
}

② strlen() は「バイト数」であって「文字数」ではない

日本語などのマルチバイト文字列に対してstrlen()を使うと、 見た目の文字数より大きい値が返ります。文字数を数えたい場合は mb_strlen()を使いましょう。

$text = 'こんにちは';

strlen($text);    // 15(UTF-8のバイト数。文字数ではない)
mb_strlen($text); // 5(実際の文字数)

文字列に関する模擬問題を解いてみよう

文字列関数の理解度を模擬試験で確認しよう

無料・登録不要ですぐに挑戦できます。