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(実際の文字数)