第5章 組み込み関数 / 第1回 模擬試験

テキスト操作に関するコードの説明のうち、誤っているものはどれか。

`print ucwords(strtoupper('kusanagi saya'));`の実行結果は`KUSANAGI SAYA`である。
`print substr('abcde', 0, 3);`の実行結果は`abcd`である。 正解
`print strlen(trim('01230'));`の実行結果は`5`である。
`printf('%05d', '123');`の実行結果は`00123`である。
解説
`substr('abcde', 0, 3)`は、文字列`'abcde'`の位置`0`から数えて`3`文字分を取り出す関数です。位置0から3文字は`a`,`b`,`c`の3文字で`'abc'`となり、`'abcd'`(4文字)にはなりません。この記述は誤りです。 他の選択肢が正しい理由は次の通りです。 ・`strtoupper('kusanagi saya')`で全て大文字の`'KUSANAGI SAYA'`になり、`ucwords()`は各単語の先頭文字を大文字にしますが、すでに全て大文字のため見た目の変化はなく結果は`'KUSANAGI SAYA'`のままです。 ・`trim()`は既定では半角スペースやタブ、改行などをトリムしますが、数字の`'0'`はトリム対象に含まれないため、`trim('01230')`は変化せず`'01230'`(5文字)のまま、`strlen()`の結果は`5`です。 ・`printf('%05d', '123')`は、`'123'`を整数として扱い、幅5・0埋めで整形するため`'00123'`になります。 例: ``` echo substr('abcde', 0, 3); // abc ``` (参照: 独習PHP 第4版 第5章 組み込み関数 5.2節 文字列関数 p.166〜189)