[ カテゴリー » Programぽいの ]

printfなどで、変数を1個だけ渡して複数表示したい場合

相変わらず、タイトルが難しい…。
コードで示すのが一番さ。

こういうこと。

printf('%sはすばらしい。そんな%sを生んだ%sはもっとすばらしい。', $child, $child, $parent);
同じ変数を2つ渡さなきゃならない。スマートでない。
そこで、
printf('%sはすばらしい。そんな%1$sを生んだ%sはもっとすばらしい。', $child, $parent);
スマートになった。
こゆこともできちゃう。
printf('%2$sはすばらしい。そんな%2$sを生んだ%1$sはもっとすばらしい。', $parent, $child);

PHPマニュアルによるとこのことは、
フォーマット文字列における引数の 番号付け/交換
と言い、本件のタイトルは
同じ置換指示子を複数回使用する際にコードに引数を追加せずにすむ
という用語を用いれば良かった模様。

— posted by たか at 03:28 pm   pingTrackBack [0]

メールヘッダのX-Mailerに記号文字を入れようとして苦労した件

"@"とか、"Co.,Ltd."とか。
他でも需要あるかもだから、軽い気持ちでやっつけようとしたのだが…。

PEAR::sendMail() を使うんだが、こいつに渡すヘッダーがちゃんとしてないと、
"Validation failed for" なエラーが発生する。

とりあえず、英数字以外を使う場合はダブルコーテーションで囲いましょう、と。

mb_encode_mimeheaderLink

でも、「"hoge@fuga Co.,Ltd"」としても、やっぱりエラー。
"@"を消すと通る模様。
むぅ。。
上記参照元に、mimeエンコードしよう、というキーワード。
しかし…
echo mb_encode_mimeheader("hoge@fuga Co.,Ltd");

hoge@fuga Co.,Ltd

エンコードされず。。
こうなりゃヤケだ。
echo mb_encode_mimeheader("あhoge@fuga Co.,Ltd");echo "¥n";
echo mb_encode_mimeheader("あ");echo "¥n";
エンコードして、「あ」の部分を除去すりゃいいだろ。

=?UTF-8?B?wqTComhvZ2VAZnVnYSBDby4sTHRk?=
=?UTF-8?B?wqTCog==?=
「あ」ってどこまで?
もう、ヤケ×2。。
echo mb_encode_mimeheader("あ hoge@fuga Co.,Ltd");echo "¥n";
echo mb_encode_mimeheader("あ ");echo "¥n";

=?UTF-8?B?wqTCoiBob2dlQGZ1Z2EgQ28uLEx0ZA==?=
=?UTF-8?B?wqTCoiA=?=

echo mb_encode_mimeheader("あ  hoge@fuga Co.,Ltd");echo "¥n";
echo mb_encode_mimeheader("あ  ");echo "¥n";

=?UTF-8?B?wqTCoiAgaG9nZUBmdWdhIENvLixMdGQ=?=
=?UTF-8?B?wqTCoiAg?=
よしゃ。「あ  」は「wqTCoiAg」っぽいぞ。
ちうわけで、
echo mb_decode_mimeheader("=?UTF-8?B?aG9nZUBmdWdhIENvLixMdGQ=?=");echo "¥n";

hoge@fuga Co.,Ltd

やたー。。でけたよ。

なんとなく、エンコード指定変更。
echo mb_decode_mimeheader("=?US-ASCII?B?aG9nZUBmdWdhIENvLixMdGQ=?=");echo "¥n";

hoge@fuga Co.,Ltd


ちゃんとした手順をご存じの方、ご教授下されまし。。。

メール エンコード ヘッダ

— posted by たか at 08:52 pm   pingTrackBack [0]

_parentの用法

有名なのかもシレンが。。

例えば、あるムービークリップ(my_mc)で
this.fnc1 = function() {
  trace("fnc1 is called.");
};
my_btn.onRelease = function() {
  _parent.fnc1();
  trace("this:"+this);
  trace("parent:"+_parent);
};
としてボタンをクリックすると、
this:_level0.my_mc.my_btn
parent:_level0

という訳で、修正版。
this.fnc1 = function() {
  trace("fnc1");
};
my_btn.onRelease = function() {
  this._parent.fnc1();
  trace("this:"+this);
  trace("parent:"+this._parent);
};
これで
fnc1 is called.
this:_level0.my_mc.my_btn
parent:_level0.my_mc
こうなる。愛でたし。

as

— posted by たか at 02:19 pm   pingTrackBack [0]

PHPの三項演算子がヴァージョンアップ?

マニュアルより
PHP 5.3 以降では、三項演算子のまんなかの部分をなくすこともできるようになりました。 式 expr1 ?: expr3 の結果は、expr1 が TRUE と同等の場合は expr1、 それ以外の場合は expr3 となります。

こんな風に使うんだろうけど、、

<input name="hoge" value="<?php echo $_REQUEST['hoge'] ?: '' ?>" />


知らなかったら、なんじゃこりゃー、だよね。
こういう記号って、ググれないしね。
「クエスチョン コロン」とかで検索してもダメだろうし。。
ま、この場合三項演算子というワードを知っていればいいんだけど。

エラー表示抑制のための"@"の意味を調べたときは骨を折ったなぁ。
親切に教えちゃったオイラは酷だね。。
骨を折る経験をしてるとしてないとでは大違いだからね、たぶん。

演算子

— posted by たか at 05:28 pm   pingTrackBack [0]

apache 起動エラー

ローカルでアパッチ(というかxamppね)を動かしてテストとかしてるわけだが、
ある日、http://localhost/Link 以下のどこにアクセスしても真っ白~になった。

netstat -ab コマンドで、httpポートはskype.exeが使用中…。

うーん、そんな訳ないだろう。netstatの使い方イマイチ把握できてないしなぁ。

と、思ったら、
skype


「上記のポートに代わり、ポート80を使用」がデフォルトらしい。
勝手だねぇ。
ファイヤウォールを考慮したんだろうけど。
初心者が設定いじらずに使えるようにしたんだろうけど。
さすが、リンゴの国のアプリだよ。


はい。チェック外したら直りましたよ、と。

— posted by たか at 02:11 pm   pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
Created in 0.0064 sec.
prev
2024.4
next
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
 
blogBar
Firefox3 Meter