Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Encode the Unicode values to be used in the URI.
- *
- * @since 1.5.0
- *
- * @param string $utf8_string
- * @param int $length Max length of the string
- * @return string String with Unicode encoded for URI.
- */
- function utf8_uri_encode( $utf8_string, $length = 0 ) {
- $unicode = '';
- $values = array();
- $num_octets = 1;
- $unicode_length = 0;
- $string_length = strlen( $utf8_string );
- for ($i = 0; $i < $string_length; $i++ ) {
- $value = ord( $utf8_string[ $i ] );
- if ( $value < 128 ) {
- if ( $length && ( $unicode_length >= $length ) )
- break;
- $unicode .= chr($value);
- $unicode_length++;
- } else {
- if ( count( $values ) == 0 ) $num_octets = ( $value < 224 ) ? 2 : 3;
- $values[] = $value;
- if ( $length && ( $unicode_length + ($num_octets * 3) ) > $length )
- break;
- if ( count( $values ) == $num_octets ) {
- if ($num_octets == 3) {
- $unicode .= '%' . dechex($values[0]) . '%' . dechex($values[1]) . '%' . dechex($values[2]);
- $unicode_length += 9;
- } else {
- $unicode .= '%' . dechex($values[0]) . '%' . dechex($values[1]);
- $unicode_length += 6;
- }
- $values = array();
- $num_octets = 1;
- }
- }
- }
- return $unicode;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement