このように、ヒアドキュメントで sprintf を使用しようとしています。うまくいきません。これを解決する方法はありますか?
$i = <<<EOD
This is your invoice for %1$s %1$s %1$s %1$s
EOD;
$year = '2013';
$i = sprintf($i,$year);
echo $i;
注意: 未定義の変数: s in
HEREDOC は二重引用符で囲まれた文字列のように機能するため、PHP は を$s
変数として補間しようとします。代わりにNOWDOCを試してください
$i = <<<'EOD'
This is your invoice for %1$s %1$s %1$s %1$s
EOD;
または、ドル記号をエスケープするだけです。
$i = <<<EOD
This is your invoice for %1\$s %1\$s %1\$s %1\$s
EOD;
これは、nowdoc 構文がない PHP 5.2 などで役立ちます。