URLに自動でパラメータを付加する(その1)
PHPで、各ページにおいて、パラメータを「確実に」持ちまわりたい。
そういう仕様を満たそうとちょっと試行錯誤中。
PHPには便利な関数「output_add_rewrite_var」というのがあって、これで値をセットすると、session.use_trans_sidのように、AタグとFORMタグで透過的にパラメータを付加してくれる。しかし・・・、これまたsession.use_trans_sidと同じように、絶対パスで書かれたリンクには自動付加がされない。
最近のブログツールやCMSでの出力処理では、大抵の場合絶対パスでリンクなどが出力されるので、こういうカスタマイズをしたいときは、普通の処理では難しい。んで、ちょっと調べてみたら、やっぱり同じようなことを考えている方がいらっしゃって、スクリプトが公開されていた。
http://schaf.ti-da.net/e1669157.html
こちらではoutput_add_rewrite_varは使わず、逐一手作業で組み込まれているような感じだ。だからoutput_add_rewrite_varが動作しない(旧バージョンの)PHPでも大丈夫だ。でも、自分の場合は、それほど古いものを使うつもりがないので、output_add_rewrite_varを使ってもっと簡単に記述できそうだ。
プログラムとしては、バッファリングをオンにし、出力までにバッファを変数に格納していったんバッファをクリア、出力データから絶対パスを取り除きたい箇所を正規表現でうまく取り出して、最後にoutput_add_rewrite_varして出力、というような流れ。頭の中ではだいたい構想は出来ていて、最低限のサンプルスクリプトをつくったらちゃんと動作している模様。あとはこれを作りこむだけ。
このプログラムは業務上必要なので、さっさと作ってしまわねばならない。これができると・・・携帯で自動的にセッションIDをもちまわるのに、非常に便利な関数になってくれると思うのだけど・・・さて、いかに。