urlencodeについて
PHPには 文字列を URL エンコードするメソッドがあります。
(例)
<?php $hoge = "aiueo+kstnmyr"; print_r(urlencode($hoge)); // aiueo%2Bkstnmyr
printfしたいときに注意しないといけないことがある。
URLエンコードした文字列をprintfで表示する
<?php $hoge = "aiueo+kstnmyr"; $hoge = "irohanihoheto" . urlencode($hoge); printf("Hello: ${hoge}\n"); // Too few arguments エラー printf("Hello: %s\n", $hoge); // Hello: irohanihohetoaiueo%2Bkstnmyr printf("Hello: ${hoge}\n", $hoge); // Hello: irohanihohetoaiueokstnmyr
最初のprintfでは、hoge変数が第一引数の中で展開されてる。
printf("Hello: irohanihohetoaiueo%2Bkstnmyr");と同義になるわけだが、
こうなると%のせいで第二引数を要求されてしまい、Too few argumentsエラーになってしまうようだ。
とはいうものの、第二引数を与えてみてもフォーマット形式が正しくないからなのか
%は消えてしまうわけだけれども。