2

ファインマニュアルには次のように記載されています。

他の言語とは異なり、バッククォートは二重引用符で囲まれた文字列内では使用できません。

ただし、経験的なテストでは問題は見つかりません。

$ cat test.php 
#!/usr/bin/php -q
<?php
echo "O`reilly\n";
echo `ls`;
echo "\n";
?>

$ ./test.php 
O`reilly
test.php

$ php --version
PHP 5.3.6-13ubuntu3.7 with Suhosin-Patch (cli) (built: May  4 2012 00:50:06) 
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans

行でバッククォートが機能しているため、明らかにセーフ モードがオフになっておりls、php.ini でセージ モードが無効になっていることがわかります。セーフ モードの他のサーバーでは、SQL クエリでバックティックを使用しましたが、問題が発生したことはありません。では、二重引用符で囲まれた文字列のバッククォートに関する警告がマニュアルにあるのはなぜですか?

4

1 に答える 1

5

あなたが読んでいるセクションは、「実行演算子」と呼ばれています。したがって、「他の言語とは異なり、二重引用符で囲まれた文字列内でバッククォートを使用することはできません」というフレーズは、次のことを意味します。

二重引用符で囲まれた文字列内でバッククォートを実行演算子として使用することはできません。

つまり、echo "`ls`"; の結果ではなく、`ls` を出力します。ls

于 2012-06-19T10:26:12.040 に答える