[PHP]URL safe な base64 encode メソッド - Hack Your Design!
ここにあるURL Safeなエンコード・デコードの例をPHPに実装してみる。
package main import ( "encoding/base64" "fmt" "strings" ) func y64_encode(raw_str string) string { encode_str := base64.StdEncoding.EncodeToString([]byte(raw_str)) r := strings.NewReplacer("=", "-", "/", "_", "+", ".") y64_encode_str := r.Replace(encode_str) return y64_encode_str } func y64_decode(y64_encode_str string) string { r := strings.NewReplacer("-", "=", "_", "/",".","+") b64_decode_str := r.Replace(y64_encode_str) data, err := base64.StdEncoding.DecodeString(b64_decode_str) if err != nil { fmt.Println("error: ", err) return "" } return string(data) } func main() { y64s := "aHR0cDovL2hlYWRsaW5lcy55YWhvby5jby5qcC9obD9hPTIwMTMwOTIzLTAwMDAwMDEzLW15Y29tai1lbnQ-" fmt.Println(y64_decode(y64s)) fmt.Println(y64_encode(y64_decode(y64s))) }
strings.NewReplacer() は置換される文字の対応関係がわかって書きやすいかなという印象。
ただ、大量の文字列になってくると正規表現での置換のほうが読みやすいかも。
あとは、byteの配列に置き換えるところがわからなくて少し悩んだ。
それ以外は特につまずくところもなくすんなり書けた。
もうしばらくはライブラリの使い方覚える意味で適当なコードを書いていきたい。
- 作者: 古川昇
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2012/11/21
- メディア: 単行本(ソフトカバー)
- クリック: 7回
- この商品を含むブログ (2件) を見る