utf8_uri_encode

函数
utf8_uri_encode ( $utf8_string, $length = 0, $encode_ascii_characters = false )
参数
  • (string) $utf8_string String to encode.
    Required:
  • (int) $length Max length of the string
    Required:
  • (bool) $encode_ascii_characters Whether to encode ascii characters such as < " '
    Required:
    Default: false
返回值
  • (string) String with Unicode encoded for URI.
定义位置
相关方法
get_url_in_contenturlencode_deepwp_json_encodereset_mbstring_encodingget_enclosed
引入
1.5.0
弃用
-

utf8_uri_encode: 这个函数对URL中使用的字符串进行编码,确保它与UTF-8编码兼容。

对URI中使用的Unicode值进行编码。

function utf8_uri_encode( $utf8_string, $length = 0, $encode_ascii_characters = false ) {
	$unicode        = '';
	$values         = array();
	$num_octets     = 1;
	$unicode_length = 0;

	mbstring_binary_safe_encoding();
	$string_length = strlen( $utf8_string );
	reset_mbstring_encoding();

	for ( $i = 0; $i < $string_length; $i++ ) {

		$value = ord( $utf8_string[ $i ] );

		if ( $value < 128 ) {
			$char                = chr( $value );
			$encoded_char        = $encode_ascii_characters ? rawurlencode( $char ) : $char;
			$encoded_char_length = strlen( $encoded_char );
			if ( $length && ( $unicode_length + $encoded_char_length ) > $length ) {
				break;
			}
			$unicode        .= $encoded_char;
			$unicode_length += $encoded_char_length;
		} else {
			if ( count( $values ) == 0 ) {
				if ( $value < 224 ) {
					$num_octets = 2;
				} elseif ( $value < 240 ) {
					$num_octets = 3;
				} else {
					$num_octets = 4;
				}
			}

			$values[] = $value;

			if ( $length && ( $unicode_length + ( $num_octets * 3 ) ) > $length ) {
				break;
			}
			if ( count( $values ) == $num_octets ) {
				for ( $j = 0; $j < $num_octets; $j++ ) {
					$unicode .= '%' . dechex( $values[ $j ] );
				}

				$unicode_length += $num_octets * 3;

				$values     = array();
				$num_octets = 1;
			}
		}
	}

	return $unicode;
}

常见问题

FAQs
查看更多 >