php で、バッククォートとシングルクォート、ダブルクォートとの違いを知りたくなり、検索してみたのだが、なんと、この3つを比較し紹介しているサイトが一件も存在しなかったので驚いたので、下に紹介しておく。

・シングルクォート…文字列内の変数は展開しない。内部にあるダブルクォートはそのまま表示できる。内部にシングルクォート自身を表示する必要がある場合は '\' を前につける必要がある。

(例)

$foo="bar";

echo ’nakami=$foo’;

とすると、"nakami=$foo"と表示される。

・ダブルクォート…文字列内の変数を展開する。内部にあるシングルクォートはそのまま表示できる。内部にダブルクォート自身を表示する必要がある場合は '\' を前につける必要がある。

(例)

$foo="bar";

echo "nakami=$foo";

とすると、"nakami=bar"と表示される。

・バッククォート…文字列内の変数を展開し、バッククォートで囲まれた文字列をシェルコマンドとして実行し、結果の出力をすべて返す。

(例)

function foo()

{

$addr="xxx.xxx.xxx.xxx";

$ret=`nslookup -timeout=1 -retry=1 $addr`;

if (preg_match('/name = (.*).\n/', $ret, $out)){

return $out[1];

} else{

return $addr;

}

}

とすると、この例では nslookup -timeout=1 -retry=1 xxx.xxx.xxx.xxx の結果の出力が $ret に文字列として返される。結果に name = に続く部分のある行があった場合、その部分を表示し、なければアドレスをそのまま返している。

どのサイトも、ダブルクォートとシングルクォートの違いしか記載されておらず、バッククォートの比較がすっぽり抜けていることに大変驚かされた。それは不十分な解説というものだろう。

この記事のリンク元 | 15 | 11 | 2 | 1 |

この記事のリンク用URL&トラックバックURL : https://red-souls.jp/ichounoki/rnote/software/20190801_153323728309.htm