冬言響 / 日記

アメコミとか映画とか音楽とか猫とか単車とか自転車とか革とか銀とかジーンズとかブーツとか今日喰ったものとか。

RSS2.0

(無題)

トラックバックの excerpt の内容に関して規定というか何というかが見つからない。まあプレーンテキストなんだろうなとは思うのだが、本当にそうなのか。HTML タグとか含んじゃ駄目か。駄目か、って言われたってもちろん駄目なんだろうが、じゃあ実際に「<foo>」みたいな文字列を送信したい場合は、或いは受信した場合はどう処理すれば良いのか。

で、とりあえず Ameba と FC2 のブログに対して「foo<bar>baz」「foo&lt;bar&gt;baz」というような具合の 2 種類の excerpt を含んだトラックバック(そんまんまだとスパム判定されたりしたので適当にちゃんとした文章に見えるようにして。要は HTML 文字をエンティティ化してない場合とした場合の 2 パターン)を打ってみたところ、

Ameba
どっちも「foo<bar>baz」と表示される。
FC2
どっちも「foobaz」と表示される。

という結果に。Ameba はエンティティ化されていようといまいと「<」という文字は「<」として認識してそのうえでエンティティ化して表示、FC2 では同じく「<」は「<」としたうえで「<bar>」はタグであると認識して除去、てなとこなのだろうか。ブログによって挙動が違ってしまうんか。タグぽい文字列をそのままタグとして表示してしまう訳にはいかんだろうから、どちらもそれなりに妥当な処置をしてるんだとは思うのだが、人間「<」という文字を表示したい場合もあれば「&lt;」という文字列を表示したい時もある訳で、どっちも同じに扱われてしまうのは少々困る気が。特に FC2 の方はタグとして認識されないように書いてるものがタグとして認識されたうえで除去されてしまうのはさらに困るんではないか、と。この文章もこのまま送ったら意味が通らなくなってしまうよなあ。

トラックバック自体 Movable Type 発祥の機能な訳なので、Movable Type がどう扱ってるのかを調べてそれが正義ってことで良いだろうか。面倒くせえなあ。

とりあえず他にも細々としたことをいろいろ検討した結果、ウチから打つ場合は「<」はそのまま「<」として送信するので(なるべく余計なことはせずに送りたい文章を送れば良い、と判断)受信側でどうにかしてください、ウチが受信したものは一律で htmlspecialchars して処理するので(二重にエンティティ化してしまうことで文意が判りにくくなる可能性はあっても、部分的に除去されて全く判らなくなるよりはマシ、と判断)、「<」は表示される時には「<」として表示されるし「&lt;」は「&lt;」と表示されますよ、と、一応そんな具合で。