Requests_IDNAEncoder::to_ascii() WordPress Method
The Requests_IDNAEncoder::to_ascii() method is used to convert internationalized domain names (IDNs) to their ASCII-compatible form. This is important for compatibility with many Internet protocols which only support ASCII characters.
Requests_IDNAEncoder::to_ascii( string $string ) #
Convert a UTF-8 string to an ASCII string using Punycode
Parameters
- $string
(string)(Required)ASCII or UTF-8 string (max length 64 characters)
Return
(string) ASCII string
Source
File: wp-includes/Requests/IDNAEncoder.php
public static function to_ascii($string) { // Step 1: Check if the string is already ASCII if (self::is_ascii($string)) { // Skip to step 7 if (strlen($string) < 64) { return $string; } throw new Requests_Exception('Provided string is too long', 'idna.provided_too_long', $string); } // Step 2: nameprep $string = self::nameprep($string); // Step 3: UseSTD3ASCIIRules is false, continue // Step 4: Check if it's ASCII now if (self::is_ascii($string)) { // Skip to step 7 if (strlen($string) < 64) { return $string; } throw new Requests_Exception('Prepared string is too long', 'idna.prepared_too_long', $string); } // Step 5: Check ACE prefix if (strpos($string, self::ACE_PREFIX) === 0) { throw new Requests_Exception('Provided string begins with ACE prefix', 'idna.provided_is_prefixed', $string); } // Step 6: Encode with Punycode $string = self::punycode_encode($string); // Step 7: Prepend ACE prefix $string = self::ACE_PREFIX . $string; // Step 8: Check size if (strlen($string) < 64) { return $string; } throw new Requests_Exception('Encoded string is too long', 'idna.encoded_too_long', $string); }
Expand full source codeCollapse full source codeView on TracView on GitHub