mucts/urlencoder

PHP兼容Java的urlencode实现

1.0.0 2020-12-27 10:34 UTC

This package is auto-updated.

Last update: 2024-09-27 20:24:34 UTC


README

  • 在1994年发布的RFC1738中。
  1. 将字符串中除了“-”、“_”、“.”之外的所有非字母数字字符替换成百分号(%)后跟两位十六进制数。

  2. 十六进制数中的字母必须为大写。

http://tools.ietf.org/html/rfc1738

  • 在2005年定义的RFC3986中。
  1. 将针对- _.~四个字符之外的所有非字母数字字符进行百分号编码。

  2. 由于历史原因,在Java和PHP中进行URLEncode时,会将空格编码为+,而不是编码为十六进制编码%20

http://tools.ietf.org/html/rfc3895

PHP-URLEncode标准

  • urlencode
  1. 实现的是1994年发布的RFC1738,另外特别将空格转义为+。

  2. 不进行编码的字符:

-._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
  • rawurlencode
  1. 实现的是2005年定义的RFC3986。

  2. 不进行编码的字符:

-._~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

JAVA-URLEncode标准

主要区别是 * 号的处理,PHP的编码为%2A,JAVA则保持 * 号不变。

使用示例

<?php

use MuCTS\URLEncoder\URLEncoder;

$res = URLEncoder::encode("~ -+.*");
var_dump($res);