001--PHP常用函数总结-编/解码篇

本文介绍了PHP中用于字符串编码解码的几个关键函数,包括base64_encode和base64_decode用于MIMEBase64编码解码,hash_hmac生成带有密钥的哈希值,以及json_encode和json_decode进行JSON格式的编码与解码。这些函数在处理二进制数据传输、邮件编码以及数据交换中起到重要作用。
摘要由CSDN通过智能技术生成

编/解码篇

  • base64_encode ( string $data ) : string
  • 使用 MIME base64 对数据进行编码
  • 设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。
<?php
$str = 'This is an encoded string';
echo base64_encode($str);
?>

VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==

  • base64_decode ( string $data , bool $strict = false ) : string
  • 使用 MIME base64 编码的数据进行解码
  • data – 编码过的数据。
  • strict – 当设置 strict 为 true 时,一旦输入的数据超出了 base64 字母表,将返回 false。 否则会静默丢弃无效的字符。
<?php
$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
echo base64_decode($str);
?>

This is an encoded string

  • hash_hmac ( string $algo , string $data , string $key , bool $raw_output = false ) : string
  • 使用 HMAC 方法生成带有密钥的哈希值
  • algo – 要使用的哈希算法名称,例如:“md5”,“sha256”,“haval160,4” 等。 如何获取受支持的算法清单,请参见 hash_hmac_algos() 函数。
  • data – 要进行哈希运算的消息。
  • key – 使用 HMAC 生成信息摘要时所使用的密钥。
  • raw_output – 设置为 true 输出原始二进制数据, 设置为 false 输出小写 16 进制字符串。
  • json_encode ( mixed $value , int $options = 0 , int $depth = 512 ) : string|false
  • 对变量进行 JSON 编码
  • 返回字符串,包含了 value 值 JSON 形式的表示。
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>

{"a":1,"b":2,"c":3,"d":4,"e":5}

  • json_decode ( string $json , bool $assoc = false , int $depth = 512 , int $options = 0 ) : mixed
  • 对 JSON 格式的字符串进行解码
  • 接受一个 JSON 编码的字符串并且把它转换为 PHP 变量
  • json – 待解码的 json string 格式的字符串。这个函数仅能处理 UTF-8 编码的数据。
  • assoc – 当该参数为 true 时,将返回 array 而非 object 。
  • depth – 指定递归深度。
  • options – 由 JSON_BIGINT_AS_STRING, JSON_INVALID_UTF8_IGNORE, JSON_INVALID_UTF8_SUBSTITUTE, JSON_OBJECT_AS_ARRAY, JSON_THROW_ON_ERROR 组成的掩码。
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

知识充电站

  • MIME编码
  • 在MIME出台之前,使用RFC 822只能发送基本的ASCII码文本信息,邮件内容如果要包括二进制文件、声音和动画等,实现起来非常困难。 MIME提供了一种可以在邮件中附加多种不同编码文件的方法,弥补了原来的信息格式的不足。实际上不仅仅是邮件编码,现在MIME已经成为HTTP协议标准的一个部分。
  • 对邮件进行编码最初的原因是因为 Internet 上的很多网关不能正确传输8bit内码的字符,比如汉字等。编码的原理就是把8bit的内容转换成7bit的形式以能正确传输,在接收方收到之后,再将其还原成8bit的内容。
  • 在MIME协议之前,邮件的编码曾经有过UUENCODE等编码方式 ,但是由于MIME协议算法简单,并且易于扩展,现在已经成为邮件编码方式的主流,不仅是用来传输8bit的字符,也可以用来传送二进制的文件,如邮件附件中的图像、音频等信息,而且扩展了很多基于MIME 的应用。从编码方式来说,MIME定义了两种编码方法Base64与QP(Quote-Printable)。
  1. Base64
    Base64是一种通用的方法,其原理很简单,就是把三个Byte的数据用4个Byte表示。在这四个Byte中,实际用到的都只有前面6bit,这样就不存在只能传输7bit的字符的问题了。Base64的缩写一般是“B”。
    Base64将输入的字符串或一段数据编码成只含有{‘A’-‘Z’, ‘a’-‘z’, ‘0’-‘9’, ‘+’, ‘/’}这64个字符的串,’=‘用于填充。
    其编码的方法是,将输入数据流每次取6bit,用此6bit的值(0-63)作为索引去查表,输出相应字符。
    这样,每3个字节将编码为4个字符(3×8 → 4×6);不满4个字符的以’='填充。
    然后将缓冲区截断成为4个部分,高位在先,每个部分6位,用4个字符重新表示。如果输入只有一个或两个字节,那么输出将用等号“=”补足。这可以隔断附加的信息造成编码的混乱。
  2. QP编码
    另一种方法是QP(Quote-Printable) 方法,通常缩写为“Q”方法,其原理是把一个8bit的字符用两个16进制数值表示,然后在前面加“=”。所以我们看到经过QP编码后的文件通常是这个样子:=B3=C2=BF=A1=C7=E5=A3= AC=C4=FA=BA=C3=A3=A1。
    Quoted -printable根据输入的字符串或字节范围进行编码,若是不需编码的字符,直接输出。若需要编码,则先输出’=’,后面跟着以2个字符表示的十六进制字节值。

参考鸣谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值