PHP “-r” “-R”オプションを活用しよう。

この記事では、PHPの-rオプションと-Rオプションについて紹介します。

ワンライナーのコマンドとして実行する場合や、
シェルスクリプトの一部としてPHPコードを実行したい場合に便利なものなので、
ぜひ参考にしてください。

-r オプションとは

-r <code>        Run PHP <code> without using script tags <?..?>

phpファイルではなく、
PHPコマンドの引数にコードを指定して実行するためのオプションです。

使い方は、下記の通り。

php -r 'print("hello\n");'
hello

-r オプションに指定したコードが実行されます。

下記のように、複数行に渡る処理も実行することができます。

php -r '
for ($i=0; $i<10; $i++){
  print("$i\n");
}
'
0
1
2
3
4
5
6
7
8
9

注意点としては、上記のサンプルはPHPコードをシングルクォートで囲っていますが、
場合によってはダブルクォートで囲いたい場合もあります。
その際には、PHPコード内のダブルクォードはエスケープする必要があります。

-R オプションとは

 -R <code>        Run PHP <code> for every input line

-Rオプションも、PHPコードを指定して実行するためのオプションですが、
パイプラインの入力を一行ずつ処理するために存在します。

-R オプションを使った場合、1行分の文字列が、$argn という変数に入ってくるので、
以下のような処理が書けます。
要素番号は、$argiという変数に設定されます。

cat << EOF |
hoge
piyo
foo
EOF
php -R '
// 一行毎に文字列を大文字化
$s = strtoupper($argn);
print("${argi}: ${argn} -> ${s}\n");
'
1: hoge -> HOGE
2: piyo -> PIYO
3: foo -> FOO

一行毎に実行したい処理が指定できます。

まとめ

シェルの機能だけでは難しい処理でも、
PHPコマンドの-rや、-Rオプションを使う事で、より実現できるものが増えていきます。

PHPだけでなく、PerlやPython、Rubyなども
オプションでコードを直接指定して実行することが可能ですので、
どんどん活用してみましょう。

タイトルとURLをコピーしました