PHP

PHPのSmarty(テンプレートエンジン)でurlencodeを行う

PHP の画面表示には、Smarty のテンプレートエンジンを使うといろいろ便利なところがあります。

例えば HTML のタグを除去してくれる escape など、PHP の多くの関数が使えるところが魅力です。

でも、便利さに慣れると意外なところでやり忘れている処理があったりします・・・。

URLの中のマルチバイト文字

URL の中でマルチバイトの文字列を使っているリンクがあったのですが、URL エンコードを忘れたまま a タグの href に入れてしまいみっともない状態に・・・。

そこで、Smarty でも urlencode 関数が使えるかなっと調べてみました。

以下は、word という変数を URL エンコードする例です。

{$word|escape|urlencode}

ブラウザのリンクにマウスを当てると、マルチバイトの文字がそのままブラウザのリンク先 URL の吹き出しに表示されますが、実際に HTML のソースを見てみると URL エンコードされているのが確認できます。

https://example.org/post/リラックマ

https://example.org/post/%e3%83%aa%e3%83%a9%e3%83%83%e3%82%af%e3%83%9e