Changeset View
Changeset View
Standalone View
Standalone View
src/utils/utf8.php
| Show First 20 Lines • Show All 143 Lines • ▼ Show 20 Lines | if ($chr >= 0x01 && $chr <= 0x7F) { | ||||
| if ($ii >= $len) { | if ($ii >= $len) { | ||||
| return false; | return false; | ||||
| } | } | ||||
| $chr = ord($string[$ii]); | $chr = ord($string[$ii]); | ||||
| if ($chr >= 0x80 && $chr <= 0xBF) { | if ($chr >= 0x80 && $chr <= 0xBF) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| return false; | return false; | ||||
| } else if ($chr == 0xED) { | |||||
| // See T11525. Some sequences in this block are surrogate codepoints | |||||
| // that are reserved for use in UTF16. We should reject them. | |||||
| $codepoint = ($chr & 0x0F) << 12; | |||||
| ++$ii; | |||||
| if ($ii >= $len) { | |||||
| return false; | |||||
| } | |||||
| $chr = ord($string[$ii]); | |||||
| $codepoint += ($chr & 0x3F) << 6; | |||||
| if ($chr >= 0x80 && $chr <= 0xBF) { | |||||
| ++$ii; | |||||
| if ($ii >= $len) { | |||||
| return false; | |||||
| } | |||||
| $chr = ord($string[$ii]); | |||||
| $codepoint += ($chr & 0x3F); | |||||
| if ($codepoint >= 0xD800 && $codepoint <= 0xDFFF) { | |||||
| // Reject these surrogate codepoints. | |||||
| return false; | |||||
| } | |||||
| if ($chr >= 0x80 && $chr <= 0xBF) { | |||||
| continue; | |||||
| } | |||||
| } | |||||
| return false; | |||||
| } else if ($chr > 0xE0 && $chr <= 0xEF) { | } else if ($chr > 0xE0 && $chr <= 0xEF) { | ||||
| ++$ii; | ++$ii; | ||||
| if ($ii >= $len) { | if ($ii >= $len) { | ||||
| return false; | return false; | ||||
| } | } | ||||
| $chr = ord($string[$ii]); | $chr = ord($string[$ii]); | ||||
| if ($chr >= 0x80 && $chr <= 0xBF) { | if ($chr >= 0x80 && $chr <= 0xBF) { | ||||
| ++$ii; | ++$ii; | ||||
| ▲ Show 20 Lines • Show All 791 Lines • Show Last 20 Lines | |||||