第3章 演算子 / 第5回 模擬試験
PHPの実行演算子(バッククォート)に関する次の記述のうち、正しいものはどれか。
実行演算子はOSのシェルコマンドを実行するために使用される。
正解
実行演算子はSQL文を実行するために使用される。
実行演算子はPHPの正規表現の区切り文字として使用される。
実行演算子はPHP8で完全に廃止された。
解説
実行演算子(バッククォート`` ` ``で文字列を囲む記法)は、囲んだ文字列をOSのシェルコマンドとして実行し、その出力結果を返します。`shell_exec()`関数と同じ働きをします。
他の選択肢が誤りである理由は次の通りです。
・SQL文の実行はPDOなどのデータベース関連の関数・クラスの役割で、実行演算子とは無関係です。
・正規表現のデリミタには通常`/`や`#`などが使われ、バッククォートは実行演算子として特別な意味を持つため、正規表現の区切り文字として使うことは実用的ではありません。
・実行演算子はPHP8時点でも引き続き使用できる構文です(廃止されていません)。
例:
```
$output = `ls -la`;
echo $output;
```
外部コマンドを実行する機能は、ユーザー入力をそのままコマンドに含めるとOSコマンドインジェクションの原因になるため、扱いには十分な注意が必要です(多くのプロジェクトではセキュリティ上の理由から使用を避けます)。
(参照: 独習PHP 第4版 第3章 演算子 3.6.2節 実行演算子 p.117)
関連する問題
- 次のコードの【 A 】に入れた場合に`true`が返される組み合わせとして正しいものはどれか。 ```php if (【 A 】) { print("true"); } else { print("false"); } 【1】"php" > "perl" 【2】0 != "0" 【3】5 - 6 + 1 【4】"false" 【5】0 + false 【6】"543a" < 56 【7】abs(-6) > 10 / 2 ```
- 次のコードの実行結果として正しいものはどれか。 ```php $a = 2 + 3 * 6; $b = $a % 7; $c = $b ** 2; print($c); ```
- PHPの論理演算子に関する次の記述のうち、正しいものはどれか。
- PHPの論理演算子に関する次の記述のうち、誤っているものはどれか。
- 次のコードの実行結果として正しいものはどれか。 ```php $a = 10; $b = 3; print $a / $b . " " . intdiv($a, $b) . " " . $a % $b; ```