| 804 | |
| 805 | // Removes combining marks using PCRE UTF-8 extension (if available) or a RegEx in UTF-8 bytes |
| 806 | if ( 1 === @preg_match( '/\p{L}/u', "\xc3\xa0" ) ) { // Match 'Unicode letter' with 'Latin a with grave' |
| 807 | $string = preg_replace( '/[\p{Mn}\p{Me}]/u', '', $string ); |
| 808 | } else { |
| 809 | $combining_marks = array( |
| 810 | '/(\xCC[\x80-\xBF])|(\xCD[\x80-\xAF])/', // Combining Diacritical Marks (U+0300 ... U+036F) |
| 811 | '/\xE1\xB7[\x80-\xBF]/', // Combining Diacritical Marks Supplement (U+1DC0 ... U+1DFF) |
| 812 | '/\xE2\x83[\x90-\xBF]/', // Combining Diacritical Marks for Symbols (U+20D0 ... U+20FF) |
| 813 | '/\xEF\xB8[\xA0-\xAF]/' // Combining Half Marks (U+FE20 .... U+FE2F) |
| 814 | ); |
| 815 | $string = preg_replace( $combining_marks, '', $string ); |
| 816 | } |
| 817 | |