Hướng dẫn dùng enconded trong PHP
Trường hợp bạn cần viết một chuỗi unicode được mã hóa mà không được sử dụng trực tiếp ký tự unicode vào code. Cách này đặc biệt hữu dụng trong việc sửa đổi bytecode của java để hiển thị tiếng việt. Kết quả ra chuỗi json thế này chứa các kỹ tự unicode mã hóa giống như thế này. Để hiển thị chuỗi giải mã đọc được từ ký tự unicode
mã hóa bởi json_encode, chúng ta gọi hàm json_decode Kết quả chuyển thành mảng có chứa ký tự đã giải mã: unescape unicode json_encode(array('fullname'=>'hoàng'),JSON_UNESCAPED_UNICODE); Hiển thị nguyên ký tự unicode như đầu vào. Cách khác cho kết quả tương tự như vậy, chúng ta mã hóa dạng entity trước khi gọi json_encode và decode entity sau khi được chuỗi json. 'Paição','cidade'=>'São Paulo'); $array = array_map('htmlentities',$array); //encode $json = html_entity_decode(json_encode($array)); //Output: {"nome":"Paição","cidade":"São Paulo"} echo $json; ?> Một số kiểu encoding có thể sử dụngMD5 converter Sử dụng
công cụ chuyển đổi encoding/decoding chuỗi online: Mã hóa đối tượngNhiều lúc việc mã hóa mảng thành chuỗi json không tiện cho lắm, dễ bị người khác đọc dữ liệu vì tính bảo mật. Có một cách khác giúp bạn mã hóa mọi đối tượng thành kiểu chuỗi, và WordPress cũng đã sử dụng cách mã hóa các đối tượng của nó với kiểu này. Bằng cách sử dụng hàm "Hoang", "old"=>24); var_dump($data); /* array 'name' => string 'Hoang' (length=5) 'old' => int 24 */ // Serialize array $data $text_serialize = serialize($data); var_dump($text_serialize); /* string 'a:2:{s:4:"name";s:3:"Hoang";s:3:"old";i:24;}' (length=44) */ // Unserialize array $data $data_unserialize = unserialize($text_serialize); var_dump($data_unserialize); /* array 'name' => string 'Hoang' (length=5) 'old' => int 24 */ ?> Như ví dụ trên, ta thấy array $data được Serialize thành chuỗi: a:2:{s:4:"name";s:3:"Hoang";s:3:"old";i:24;} Rất tiện cho các bạn lưu các đối tượng PHP vào Database. Trong WordPress có viết hàm giúp bạn kiểm tra một chuỗi được tạo bởi serialize từ một đối tượng, trước khi sử dụng hàm giải mã đối tượng unserialize bạn nên kiểm tra có hợp lệ không với hàm is_serialized của wordpress. Hàm này mình trích dẫn có sẵn trong wordpress rồi nhé: Cách sử dụng: if(is_serialized($str)){ var_dump(unserialize($str)); } Chú ý: bạn không thể mã hóa hàm bằng serialize là không cho phép. Ngoài cách sử dụng hàm is_serialize của wordpress có thể dùng trực tiếp hàm có khả năng giải mã chuỗi thành đối tượng hay không: //Check to see if a string is serialized? $data = @unserialize($str); if ($str === 'b:0;' || $data !== false) { echo "ok"; } else { echo "not ok"; } Bạn có thể kết hợp giữa kiểu mã hóa mảng với serialize và base64, bảo mật 100% khiến người dùng không thể đọc chuỗi mã hóa cuối cùng của mảng. //best way to encode array use combination of base64 & serialize $safe_string_to_store = base64_encode(serialize($multidimensional_array)); //to unserialize... $array_restored_from_db = unserialize(base64_decode($safe_string_to_store)); Nếu bạn thấy bài viết này hữu ích, hãy chia sẻ với bạn bè bằng cách nhấn nút chia sẻ ở bên dưới. Theo dõi chúng tôi trên Twitter và Facebook |