This is probably good enough for now. This is not the most correct as this would only allow for a 63-byte U-label (composed multibyte characters) when the specification is that the A-label (punycode) must be no more than 63 characters. The current heavyweight is the Tamil-language domain for .SG  that comes in at 22 characters on the A-label: XN--CLCHC0EA0B2G2A9GCD and has a 33-byte U-label: சிங்கப்பூர்.

I'm contemplating doing a wholesale changeover of the arrays and checking from the composed UTF-8 names to the punycode A labels. This would make it easier to make sure the RTL domains aren't being munged on accident, and allow for a more correct byte checking.

@weierophinney The intl extension is bundled with >=5.3.0. Can I rely on the availability of the intl extension?Otherwise I'll have to go find code to do the U->A label conversion.