X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/446fc046ca303b25776b07134407239bdeafa3e6..8d3bb1a5dcfdea9857d3c88c3751f09593e34dc8:/wp-includes/formatting.php diff --git a/wp-includes/formatting.php b/wp-includes/formatting.php index 97a290ad..2701c1a1 100644 --- a/wp-includes/formatting.php +++ b/wp-includes/formatting.php @@ -20,7 +20,7 @@ * * Code within certain html blocks are skipped. * - * Do not use this function before the 'init' action hook; everything will break. + * Do not use this function before the {@see 'init'} action hook; everything will break. * * @since 0.71 * @@ -66,7 +66,7 @@ function wptexturize( $text, $reset = false ) { // Set up static variables. Run once only. if ( $reset || ! isset( $static_characters ) ) { /** - * Filter whether to skip running wptexturize(). + * Filters whether to skip running wptexturize(). * * Passing false to the filter will effectively short-circuit wptexturize(). * returning the original text passed to the function instead. @@ -195,7 +195,7 @@ function wptexturize( $text, $reset = false ) { // Must do this every time in case plugins use these filters in a context sensitive manner /** - * Filter the list of HTML elements not to texturize. + * Filters the list of HTML elements not to texturize. * * @since 2.8.0 * @@ -203,7 +203,7 @@ function wptexturize( $text, $reset = false ) { */ $no_texturize_tags = apply_filters( 'no_texturize_tags', $default_no_texturize_tags ); /** - * Filter the list of shortcodes not to texturize. + * Filters the list of shortcodes not to texturize. * * @since 2.8.0 * @@ -934,7 +934,7 @@ function _wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = fals $string = @htmlspecialchars( $string, $quote_style, $charset, $double_encode ); - // Backwards compatibility + // Back-compat. if ( 'single' === $_quote_style ) $string = str_replace( "'", ''', $string ); @@ -1124,7 +1124,374 @@ function utf8_uri_encode( $utf8_string, $length = 0 ) { * * If there are no accent characters, then the string given is just returned. * + * **Accent characters converted:** + * + * Currency signs: + * + * | Code | Glyph | Replacement | Description | + * | -------- | ----- | ----------- | ------------------- | + * | U+00A3 | £ | (empty) | British Pound sign | + * | U+20AC | € | E | Euro sign | + * + * Decompositions for Latin-1 Supplement: + * + * | Code | Glyph | Replacement | Description | + * | ------- | ----- | ----------- | -------------------------------------- | + * | U+00AA | ª | a | Feminine ordinal indicator | + * | U+00BA | º | o | Masculine ordinal indicator | + * | U+00C0 | À | A | Latin capital letter A with grave | + * | U+00C1 | Á | A | Latin capital letter A with acute | + * | U+00C2 |  | A | Latin capital letter A with circumflex | + * | U+00C3 | à | A | Latin capital letter A with tilde | + * | U+00C4 | Ä | A | Latin capital letter A with diaeresis | + * | U+00C5 | Å | A | Latin capital letter A with ring above | + * | U+00C6 | Æ | AE | Latin capital letter AE | + * | U+00C7 | Ç | C | Latin capital letter C with cedilla | + * | U+00C8 | È | E | Latin capital letter E with grave | + * | U+00C9 | É | E | Latin capital letter E with acute | + * | U+00CA | Ê | E | Latin capital letter E with circumflex | + * | U+00CB | Ë | E | Latin capital letter E with diaeresis | + * | U+00CC | Ì | I | Latin capital letter I with grave | + * | U+00CD | Í | I | Latin capital letter I with acute | + * | U+00CE | Î | I | Latin capital letter I with circumflex | + * | U+00CF | Ï | I | Latin capital letter I with diaeresis | + * | U+00D0 | Ð | D | Latin capital letter Eth | + * | U+00D1 | Ñ | N | Latin capital letter N with tilde | + * | U+00D2 | Ò | O | Latin capital letter O with grave | + * | U+00D3 | Ó | O | Latin capital letter O with acute | + * | U+00D4 | Ô | O | Latin capital letter O with circumflex | + * | U+00D5 | Õ | O | Latin capital letter O with tilde | + * | U+00D6 | Ö | O | Latin capital letter O with diaeresis | + * | U+00D8 | Ø | O | Latin capital letter O with stroke | + * | U+00D9 | Ù | U | Latin capital letter U with grave | + * | U+00DA | Ú | U | Latin capital letter U with acute | + * | U+00DB | Û | U | Latin capital letter U with circumflex | + * | U+00DC | Ü | U | Latin capital letter U with diaeresis | + * | U+00DD | Ý | Y | Latin capital letter Y with acute | + * | U+00DE | Þ | TH | Latin capital letter Thorn | + * | U+00DF | ß | s | Latin small letter sharp s | + * | U+00E0 | à | a | Latin small letter a with grave | + * | U+00E1 | á | a | Latin small letter a with acute | + * | U+00E2 | â | a | Latin small letter a with circumflex | + * | U+00E3 | ã | a | Latin small letter a with tilde | + * | U+00E4 | ä | a | Latin small letter a with diaeresis | + * | U+00E5 | Ã¥ | a | Latin small letter a with ring above | + * | U+00E6 | æ | ae | Latin small letter ae | + * | U+00E7 | ç | c | Latin small letter c with cedilla | + * | U+00E8 | è | e | Latin small letter e with grave | + * | U+00E9 | é | e | Latin small letter e with acute | + * | U+00EA | ê | e | Latin small letter e with circumflex | + * | U+00EB | ë | e | Latin small letter e with diaeresis | + * | U+00EC | ì | i | Latin small letter i with grave | + * | U+00ED | í | i | Latin small letter i with acute | + * | U+00EE | î | i | Latin small letter i with circumflex | + * | U+00EF | ï | i | Latin small letter i with diaeresis | + * | U+00F0 | ð | d | Latin small letter Eth | + * | U+00F1 | ñ | n | Latin small letter n with tilde | + * | U+00F2 | ò | o | Latin small letter o with grave | + * | U+00F3 | ó | o | Latin small letter o with acute | + * | U+00F4 | ô | o | Latin small letter o with circumflex | + * | U+00F5 | õ | o | Latin small letter o with tilde | + * | U+00F6 | ö | o | Latin small letter o with diaeresis | + * | U+00F8 | ø | o | Latin small letter o with stroke | + * | U+00F9 | ù | u | Latin small letter u with grave | + * | U+00FA | ú | u | Latin small letter u with acute | + * | U+00FB | û | u | Latin small letter u with circumflex | + * | U+00FC | ü | u | Latin small letter u with diaeresis | + * | U+00FD | ý | y | Latin small letter y with acute | + * | U+00FE | þ | th | Latin small letter Thorn | + * | U+00FF | ÿ | y | Latin small letter y with diaeresis | + * + * Decompositions for Latin Extended-A: + * + * | Code | Glyph | Replacement | Description | + * | ------- | ----- | ----------- | ------------------------------------------------- | + * | U+0100 | Ā | A | Latin capital letter A with macron | + * | U+0101 | ā | a | Latin small letter a with macron | + * | U+0102 | Ă | A | Latin capital letter A with breve | + * | U+0103 | ă | a | Latin small letter a with breve | + * | U+0104 | Ą | A | Latin capital letter A with ogonek | + * | U+0105 | ą | a | Latin small letter a with ogonek | + * | U+01006 | Ć | C | Latin capital letter C with acute | + * | U+0107 | ć | c | Latin small letter c with acute | + * | U+0108 | Ĉ | C | Latin capital letter C with circumflex | + * | U+0109 | ĉ | c | Latin small letter c with circumflex | + * | U+010A | Ċ | C | Latin capital letter C with dot above | + * | U+010B | ċ | c | Latin small letter c with dot above | + * | U+010C | Č | C | Latin capital letter C with caron | + * | U+010D | č | c | Latin small letter c with caron | + * | U+010E | Ď | D | Latin capital letter D with caron | + * | U+010F | ď | d | Latin small letter d with caron | + * | U+0110 | Đ | D | Latin capital letter D with stroke | + * | U+0111 | đ | d | Latin small letter d with stroke | + * | U+0112 | Ē | E | Latin capital letter E with macron | + * | U+0113 | ē | e | Latin small letter e with macron | + * | U+0114 | Ĕ | E | Latin capital letter E with breve | + * | U+0115 | ĕ | e | Latin small letter e with breve | + * | U+0116 | Ė | E | Latin capital letter E with dot above | + * | U+0117 | ė | e | Latin small letter e with dot above | + * | U+0118 | Ę | E | Latin capital letter E with ogonek | + * | U+0119 | ę | e | Latin small letter e with ogonek | + * | U+011A | Ě | E | Latin capital letter E with caron | + * | U+011B | ě | e | Latin small letter e with caron | + * | U+011C | Ĝ | G | Latin capital letter G with circumflex | + * | U+011D | ĝ | g | Latin small letter g with circumflex | + * | U+011E | Ğ | G | Latin capital letter G with breve | + * | U+011F | ğ | g | Latin small letter g with breve | + * | U+0120 | Ä  | G | Latin capital letter G with dot above | + * | U+0121 | Ä¡ | g | Latin small letter g with dot above | + * | U+0122 | Ä¢ | G | Latin capital letter G with cedilla | + * | U+0123 | Ä£ | g | Latin small letter g with cedilla | + * | U+0124 | Ĥ | H | Latin capital letter H with circumflex | + * | U+0125 | Ä¥ | h | Latin small letter h with circumflex | + * | U+0126 | Ħ | H | Latin capital letter H with stroke | + * | U+0127 | ħ | h | Latin small letter h with stroke | + * | U+0128 | Ĩ | I | Latin capital letter I with tilde | + * | U+0129 | Ä© | i | Latin small letter i with tilde | + * | U+012A | Ī | I | Latin capital letter I with macron | + * | U+012B | Ä« | i | Latin small letter i with macron | + * | U+012C | Ĭ | I | Latin capital letter I with breve | + * | U+012D | Ä­ | i | Latin small letter i with breve | + * | U+012E | Ä® | I | Latin capital letter I with ogonek | + * | U+012F | į | i | Latin small letter i with ogonek | + * | U+0130 | Ä° | I | Latin capital letter I with dot above | + * | U+0131 | ı | i | Latin small letter dotless i | + * | U+0132 | IJ | IJ | Latin capital ligature IJ | + * | U+0133 | ij | ij | Latin small ligature ij | + * | U+0134 | Ä´ | J | Latin capital letter J with circumflex | + * | U+0135 | ĵ | j | Latin small letter j with circumflex | + * | U+0136 | Ķ | K | Latin capital letter K with cedilla | + * | U+0137 | Ä· | k | Latin small letter k with cedilla | + * | U+0138 | ĸ | k | Latin small letter Kra | + * | U+0139 | Ĺ | L | Latin capital letter L with acute | + * | U+013A | ĺ | l | Latin small letter l with acute | + * | U+013B | Ä» | L | Latin capital letter L with cedilla | + * | U+013C | ļ | l | Latin small letter l with cedilla | + * | U+013D | Ľ | L | Latin capital letter L with caron | + * | U+013E | ľ | l | Latin small letter l with caron | + * | U+013F | Ä¿ | L | Latin capital letter L with middle dot | + * | U+0140 | ŀ | l | Latin small letter l with middle dot | + * | U+0141 | Ł | L | Latin capital letter L with stroke | + * | U+0142 | ł | l | Latin small letter l with stroke | + * | U+0143 | Ń | N | Latin capital letter N with acute | + * | U+0144 | ń | n | Latin small letter N with acute | + * | U+0145 | Ņ | N | Latin capital letter N with cedilla | + * | U+0146 | ņ | n | Latin small letter n with cedilla | + * | U+0147 | Ň | N | Latin capital letter N with caron | + * | U+0148 | ň | n | Latin small letter n with caron | + * | U+0149 | ʼn | N | Latin small letter n preceded by apostrophe | + * | U+014A | Ŋ | n | Latin capital letter Eng | + * | U+014B | ŋ | N | Latin small letter Eng | + * | U+014C | Ō | O | Latin capital letter O with macron | + * | U+014D | ō | o | Latin small letter o with macron | + * | U+014E | Ŏ | O | Latin capital letter O with breve | + * | U+014F | ŏ | o | Latin small letter o with breve | + * | U+0150 | Ő | O | Latin capital letter O with double acute | + * | U+0151 | ő | o | Latin small letter o with double acute | + * | U+0152 | Œ | OE | Latin capital ligature OE | + * | U+0153 | œ | oe | Latin small ligature oe | + * | U+0154 | Ŕ | R | Latin capital letter R with acute | + * | U+0155 | ŕ | r | Latin small letter r with acute | + * | U+0156 | Ŗ | R | Latin capital letter R with cedilla | + * | U+0157 | ŗ | r | Latin small letter r with cedilla | + * | U+0158 | Ř | R | Latin capital letter R with caron | + * | U+0159 | ř | r | Latin small letter r with caron | + * | U+015A | Ś | S | Latin capital letter S with acute | + * | U+015B | ś | s | Latin small letter s with acute | + * | U+015C | Ŝ | S | Latin capital letter S with circumflex | + * | U+015D | ŝ | s | Latin small letter s with circumflex | + * | U+015E | Ş | S | Latin capital letter S with cedilla | + * | U+015F | ş | s | Latin small letter s with cedilla | + * | U+0160 | Å  | S | Latin capital letter S with caron | + * | U+0161 | Å¡ | s | Latin small letter s with caron | + * | U+0162 | Å¢ | T | Latin capital letter T with cedilla | + * | U+0163 | Å£ | t | Latin small letter t with cedilla | + * | U+0164 | Ť | T | Latin capital letter T with caron | + * | U+0165 | Å¥ | t | Latin small letter t with caron | + * | U+0166 | Ŧ | T | Latin capital letter T with stroke | + * | U+0167 | ŧ | t | Latin small letter t with stroke | + * | U+0168 | Ũ | U | Latin capital letter U with tilde | + * | U+0169 | Å© | u | Latin small letter u with tilde | + * | U+016A | Ū | U | Latin capital letter U with macron | + * | U+016B | Å« | u | Latin small letter u with macron | + * | U+016C | Ŭ | U | Latin capital letter U with breve | + * | U+016D | Å­ | u | Latin small letter u with breve | + * | U+016E | Å® | U | Latin capital letter U with ring above | + * | U+016F | ů | u | Latin small letter u with ring above | + * | U+0170 | Å° | U | Latin capital letter U with double acute | + * | U+0171 | ű | u | Latin small letter u with double acute | + * | U+0172 | Ų | U | Latin capital letter U with ogonek | + * | U+0173 | ų | u | Latin small letter u with ogonek | + * | U+0174 | Å´ | W | Latin capital letter W with circumflex | + * | U+0175 | ŵ | w | Latin small letter w with circumflex | + * | U+0176 | Ŷ | Y | Latin capital letter Y with circumflex | + * | U+0177 | Å· | y | Latin small letter y with circumflex | + * | U+0178 | Ÿ | Y | Latin capital letter Y with diaeresis | + * | U+0179 | Ź | Z | Latin capital letter Z with acute | + * | U+017A | ź | z | Latin small letter z with acute | + * | U+017B | Å» | Z | Latin capital letter Z with dot above | + * | U+017C | ż | z | Latin small letter z with dot above | + * | U+017D | Ž | Z | Latin capital letter Z with caron | + * | U+017E | ž | z | Latin small letter z with caron | + * | U+017F | Å¿ | s | Latin small letter long s | + * | U+01A0 | Æ  | O | Latin capital letter O with horn | + * | U+01A1 | Æ¡ | o | Latin small letter o with horn | + * | U+01AF | Ư | U | Latin capital letter U with horn | + * | U+01B0 | Æ° | u | Latin small letter u with horn | + * | U+01CD | Ǎ | A | Latin capital letter A with caron | + * | U+01CE | ǎ | a | Latin small letter a with caron | + * | U+01CF | Ǐ | I | Latin capital letter I with caron | + * | U+01D0 | ǐ | i | Latin small letter i with caron | + * | U+01D1 | Ǒ | O | Latin capital letter O with caron | + * | U+01D2 | ǒ | o | Latin small letter o with caron | + * | U+01D3 | Ǔ | U | Latin capital letter U with caron | + * | U+01D4 | ǔ | u | Latin small letter u with caron | + * | U+01D5 | Ǖ | U | Latin capital letter U with diaeresis and macron | + * | U+01D6 | ǖ | u | Latin small letter u with diaeresis and macron | + * | U+01D7 | Ǘ | U | Latin capital letter U with diaeresis and acute | + * | U+01D8 | ǘ | u | Latin small letter u with diaeresis and acute | + * | U+01D9 | Ǚ | U | Latin capital letter U with diaeresis and caron | + * | U+01DA | ǚ | u | Latin small letter u with diaeresis and caron | + * | U+01DB | Ǜ | U | Latin capital letter U with diaeresis and grave | + * | U+01DC | ǜ | u | Latin small letter u with diaeresis and grave | + * + * Decompositions for Latin Extended-B: + * + * | Code | Glyph | Replacement | Description | + * | -------- | ----- | ----------- | ----------------------------------------- | + * | U+0218 | Ș | S | Latin capital letter S with comma below | + * | U+0219 | ș | s | Latin small letter s with comma below | + * | U+021A | Ț | T | Latin capital letter T with comma below | + * | U+021B | ț | t | Latin small letter t with comma below | + * + * Vowels with diacritic (Chinese, Hanyu Pinyin): + * + * | Code | Glyph | Replacement | Description | + * | -------- | ----- | ----------- | ----------------------------------------------------- | + * | U+0251 | ɑ | a | Latin small letter alpha | + * | U+1EA0 | Ạ | A | Latin capital letter A with dot below | + * | U+1EA1 | ạ | a | Latin small letter a with dot below | + * | U+1EA2 | Ả | A | Latin capital letter A with hook above | + * | U+1EA3 | ả | a | Latin small letter a with hook above | + * | U+1EA4 | Ấ | A | Latin capital letter A with circumflex and acute | + * | U+1EA5 | ấ | a | Latin small letter a with circumflex and acute | + * | U+1EA6 | Ầ | A | Latin capital letter A with circumflex and grave | + * | U+1EA7 | ầ | a | Latin small letter a with circumflex and grave | + * | U+1EA8 | Ẩ | A | Latin capital letter A with circumflex and hook above | + * | U+1EA9 | ẩ | a | Latin small letter a with circumflex and hook above | + * | U+1EAA | Ẫ | A | Latin capital letter A with circumflex and tilde | + * | U+1EAB | ẫ | a | Latin small letter a with circumflex and tilde | + * | U+1EA6 | Ậ | A | Latin capital letter A with circumflex and dot below | + * | U+1EAD | ậ | a | Latin small letter a with circumflex and dot below | + * | U+1EAE | Ắ | A | Latin capital letter A with breve and acute | + * | U+1EAF | ắ | a | Latin small letter a with breve and acute | + * | U+1EB0 | Ằ | A | Latin capital letter A with breve and grave | + * | U+1EB1 | ằ | a | Latin small letter a with breve and grave | + * | U+1EB2 | Ẳ | A | Latin capital letter A with breve and hook above | + * | U+1EB3 | ẳ | a | Latin small letter a with breve and hook above | + * | U+1EB4 | Ẵ | A | Latin capital letter A with breve and tilde | + * | U+1EB5 | ẵ | a | Latin small letter a with breve and tilde | + * | U+1EB6 | Ặ | A | Latin capital letter A with breve and dot below | + * | U+1EB7 | ặ | a | Latin small letter a with breve and dot below | + * | U+1EB8 | Ẹ | E | Latin capital letter E with dot below | + * | U+1EB9 | ẹ | e | Latin small letter e with dot below | + * | U+1EBA | Ẻ | E | Latin capital letter E with hook above | + * | U+1EBB | ẻ | e | Latin small letter e with hook above | + * | U+1EBC | Ẽ | E | Latin capital letter E with tilde | + * | U+1EBD | ẽ | e | Latin small letter e with tilde | + * | U+1EBE | Ế | E | Latin capital letter E with circumflex and acute | + * | U+1EBF | ế | e | Latin small letter e with circumflex and acute | + * | U+1EC0 | Ề | E | Latin capital letter E with circumflex and grave | + * | U+1EC1 | ề | e | Latin small letter e with circumflex and grave | + * | U+1EC2 | Ể | E | Latin capital letter E with circumflex and hook above | + * | U+1EC3 | ể | e | Latin small letter e with circumflex and hook above | + * | U+1EC4 | Ễ | E | Latin capital letter E with circumflex and tilde | + * | U+1EC5 | ễ | e | Latin small letter e with circumflex and tilde | + * | U+1EC6 | Ệ | E | Latin capital letter E with circumflex and dot below | + * | U+1EC7 | ệ | e | Latin small letter e with circumflex and dot below | + * | U+1EC8 | Ỉ | I | Latin capital letter I with hook above | + * | U+1EC9 | ỉ | i | Latin small letter i with hook above | + * | U+1ECA | Ị | I | Latin capital letter I with dot below | + * | U+1ECB | ị | i | Latin small letter i with dot below | + * | U+1ECC | Ọ | O | Latin capital letter O with dot below | + * | U+1ECD | ọ | o | Latin small letter o with dot below | + * | U+1ECE | Ỏ | O | Latin capital letter O with hook above | + * | U+1ECF | ỏ | o | Latin small letter o with hook above | + * | U+1ED0 | Ố | O | Latin capital letter O with circumflex and acute | + * | U+1ED1 | ố | o | Latin small letter o with circumflex and acute | + * | U+1ED2 | Ồ | O | Latin capital letter O with circumflex and grave | + * | U+1ED3 | ồ | o | Latin small letter o with circumflex and grave | + * | U+1ED4 | Ổ | O | Latin capital letter O with circumflex and hook above | + * | U+1ED5 | ổ | o | Latin small letter o with circumflex and hook above | + * | U+1ED6 | Ỗ | O | Latin capital letter O with circumflex and tilde | + * | U+1ED7 | ỗ | o | Latin small letter o with circumflex and tilde | + * | U+1ED8 | Ộ | O | Latin capital letter O with circumflex and dot below | + * | U+1ED9 | ộ | o | Latin small letter o with circumflex and dot below | + * | U+1EDA | Ớ | O | Latin capital letter O with horn and acute | + * | U+1EDB | ớ | o | Latin small letter o with horn and acute | + * | U+1EDC | Ờ | O | Latin capital letter O with horn and grave | + * | U+1EDD | ờ | o | Latin small letter o with horn and grave | + * | U+1EDE | Ở | O | Latin capital letter O with horn and hook above | + * | U+1EDF | ở | o | Latin small letter o with horn and hook above | + * | U+1EE0 | á»  | O | Latin capital letter O with horn and tilde | + * | U+1EE1 | ỡ | o | Latin small letter o with horn and tilde | + * | U+1EE2 | Ợ | O | Latin capital letter O with horn and dot below | + * | U+1EE3 | ợ | o | Latin small letter o with horn and dot below | + * | U+1EE4 | Ụ | U | Latin capital letter U with dot below | + * | U+1EE5 | ụ | u | Latin small letter u with dot below | + * | U+1EE6 | Ủ | U | Latin capital letter U with hook above | + * | U+1EE7 | ủ | u | Latin small letter u with hook above | + * | U+1EE8 | Ứ | U | Latin capital letter U with horn and acute | + * | U+1EE9 | ứ | u | Latin small letter u with horn and acute | + * | U+1EEA | Ừ | U | Latin capital letter U with horn and grave | + * | U+1EEB | ừ | u | Latin small letter u with horn and grave | + * | U+1EEC | Ử | U | Latin capital letter U with horn and hook above | + * | U+1EED | á»­ | u | Latin small letter u with horn and hook above | + * | U+1EEE | á»® | U | Latin capital letter U with horn and tilde | + * | U+1EEF | ữ | u | Latin small letter u with horn and tilde | + * | U+1EF0 | á»° | U | Latin capital letter U with horn and dot below | + * | U+1EF1 | á»± | u | Latin small letter u with horn and dot below | + * | U+1EF2 | Ỳ | Y | Latin capital letter Y with grave | + * | U+1EF3 | ỳ | y | Latin small letter y with grave | + * | U+1EF4 | á»´ | Y | Latin capital letter Y with dot below | + * | U+1EF5 | ỵ | y | Latin small letter y with dot below | + * | U+1EF6 | Ỷ | Y | Latin capital letter Y with hook above | + * | U+1EF7 | á»· | y | Latin small letter y with hook above | + * | U+1EF8 | Ỹ | Y | Latin capital letter Y with tilde | + * | U+1EF9 | ỹ | y | Latin small letter y with tilde | + * + * German (`de_DE`), German formal (`de_DE_formal`), German (Switzerland) formal (`de_CH`), + * and German (Switzerland) informal (`de_CH_informal`) locales: + * + * | Code | Glyph | Replacement | Description | + * | -------- | ----- | ----------- | --------------------------------------- | + * | U+00C4 | Ä | Ae | Latin capital letter A with diaeresis | + * | U+00E4 | ä | ae | Latin small letter a with diaeresis | + * | U+00D6 | Ö | Oe | Latin capital letter O with diaeresis | + * | U+00F6 | ö | oe | Latin small letter o with diaeresis | + * | U+00DC | Ü | Ue | Latin capital letter U with diaeresis | + * | U+00FC | ü | ue | Latin small letter u with diaeresis | + * | U+00DF | ß | ss | Latin small letter sharp s | + * + * Danish (`da_DK`) locale: + * + * | Code | Glyph | Replacement | Description | + * | -------- | ----- | ----------- | --------------------------------------- | + * | U+00C6 | Æ | Ae | Latin capital letter AE | + * | U+00E6 | æ | ae | Latin small letter ae | + * | U+00D8 | Ø | Oe | Latin capital letter O with stroke | + * | U+00F8 | ø | oe | Latin small letter o with stroke | + * | U+00C5 | Å | Aa | Latin capital letter A with ring above | + * | U+00E5 | Ã¥ | aa | Latin small letter a with ring above | + * + * Catalan (`ca`) locale: + * + * | Code | Glyph | Replacement | Description | + * | -------- | ----- | ----------- | --------------------------------------- | + * | U+00B7 | l·l | ll | Flown dot (between two Ls) | + * * @since 1.2.1 + * @since 4.6.0 Added locale support for `de_CH`, `de_CH_informal`, and `ca`. * * @param string $string Text that might have accent characters * @return string Filtered string with replaced "nice" characters. @@ -1313,7 +1680,7 @@ function remove_accents( $string ) { // Used for locale-specific rules $locale = get_locale(); - if ( 'de_DE' == $locale || 'de_DE_formal' == $locale ) { + if ( 'de_DE' == $locale || 'de_DE_formal' == $locale || 'de_CH' == $locale || 'de_CH_informal' == $locale ) { $chars[ chr(195).chr(132) ] = 'Ae'; $chars[ chr(195).chr(164) ] = 'ae'; $chars[ chr(195).chr(150) ] = 'Oe'; @@ -1328,6 +1695,8 @@ function remove_accents( $string ) { $chars[ chr(195).chr(184) ] = 'oe'; $chars[ chr(195).chr(133) ] = 'Aa'; $chars[ chr(195).chr(165) ] = 'aa'; + } elseif ( 'ca' === $locale ) { + $chars[ chr(108).chr(194).chr(183).chr(108) ] = 'll'; } $string = strtr($string, $chars); @@ -1364,7 +1733,8 @@ function remove_accents( $string ) { * operating systems and special characters requiring special escaping * to manipulate at the command line. Replaces spaces and consecutive * dashes with a single dash. Trims period, dash and underscore from beginning - * and end of filename. + * and end of filename. It is not guaranteed that this function will return a + * filename that is allowed to be uploaded. * * @since 2.1.0 * @@ -1375,7 +1745,7 @@ function sanitize_file_name( $filename ) { $filename_raw = $filename; $special_chars = array("?", "[", "]", "/", "\\", "=", "<", ">", ":", ";", ",", "'", "\"", "&", "$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}", "%", "+", chr(0)); /** - * Filter the list of characters to remove from a filename. + * Filters the list of characters to remove from a filename. * * @since 2.8.0 * @@ -1389,13 +1759,21 @@ function sanitize_file_name( $filename ) { $filename = preg_replace( '/[\r\n\t -]+/', '-', $filename ); $filename = trim( $filename, '.-_' ); + if ( false === strpos( $filename, '.' ) ) { + $mime_types = wp_get_mime_types(); + $filetype = wp_check_filetype( 'test.' . $filename, $mime_types ); + if ( $filetype['ext'] === $filename ) { + $filename = 'unnamed-file.' . $filetype['ext']; + } + } + // Split the filename into a base and extension[s] $parts = explode('.', $filename); // Return if only one extension if ( count( $parts ) <= 2 ) { /** - * Filter a sanitized filename string. + * Filters a sanitized filename string. * * @since 2.8.0 * @@ -1441,7 +1819,7 @@ function sanitize_file_name( $filename ) { * Removes tags, octets, entities, and if strict is enabled, will only keep * alphanumeric, _, space, ., -, @. After sanitizing, it passes the username, * raw username (the username in the parameter), and the value of $strict as - * parameters for the 'sanitize_user' filter. + * parameters for the {@see 'sanitize_user'} filter. * * @since 2.0.0 * @@ -1466,7 +1844,7 @@ function sanitize_user( $username, $strict = false ) { $username = preg_replace( '|\s+|', ' ', $username ); /** - * Filter a sanitized username string. + * Filters a sanitized username string. * * @since 2.0.1 * @@ -1493,7 +1871,7 @@ function sanitize_key( $key ) { $key = preg_replace( '/[^a-z0-9_\-]/', '', $key ); /** - * Filter a sanitized key string. + * Filters a sanitized key string. * * @since 3.0.0 * @@ -1524,7 +1902,7 @@ function sanitize_title( $title, $fallback_title = '', $context = 'save' ) { $title = remove_accents($title); /** - * Filter a sanitized title string. + * Filters a sanitized title string. * * @since 1.2.0 * @@ -1669,7 +2047,7 @@ function sanitize_html_class( $class, $fallback = '' ) { return sanitize_html_class( $fallback ); } /** - * Filter a sanitized HTML class string. + * Filters a sanitized HTML class string. * * @since 2.8.0 * @@ -1904,8 +2282,8 @@ function force_balance_tags( $text ) { * Acts on text which is about to be edited. * * The $content is run through esc_textarea(), which uses htmlspecialchars() - * to convert special characters to HTML entities. If $richedit is set to true, - * it is simply a holder for the 'format_to_edit' filter. + * to convert special characters to HTML entities. If `$richedit` is set to true, + * it is simply a holder for the {@see 'format_to_edit'} filter. * * @since 0.71 * @since 4.4.0 The `$richedit` parameter was renamed to `$rich_text` for clarity. @@ -1918,7 +2296,7 @@ function force_balance_tags( $text ) { */ function format_to_edit( $content, $rich_text = false ) { /** - * Filter the text to be formatted for editing. + * Filters the text to be formatted for editing. * * @since 1.2.0 * @@ -2002,7 +2380,7 @@ function untrailingslashit( $string ) { * Adds slashes to escape strings. * * Slashes will first be removed if magic_quotes_gpc is set, see {@link - * http://www.php.net/magic_quotes} for more details. + * https://secure.php.net/magic_quotes} for more details. * * @since 0.71 * @@ -2104,8 +2482,7 @@ function antispambot( $email_address, $hex_encoding = 0 ) { /** * Callback to convert URI match to HTML A element. * - * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link - * make_clickable()}. + * This function was backported from 2.5.0 to 2.3.2. Regex callback for make_clickable(). * * @since 2.3.2 * @access private @@ -2141,8 +2518,7 @@ function _make_url_clickable_cb( $matches ) { /** * Callback to convert URL match to HTML A element. * - * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link - * make_clickable()}. + * This function was backported from 2.5.0 to 2.3.2. Regex callback for make_clickable(). * * @since 2.3.2 * @access private @@ -2171,8 +2547,7 @@ function _make_web_ftp_clickable_cb( $matches ) { /** * Callback to convert email address match to HTML A element. * - * This function was backported from 2.5.0 to 2.3.2. Regex callback for {@link - * make_clickable()}. + * This function was backported from 2.5.0 to 2.3.2. Regex callback for make_clickable(). * * @since 2.3.2 * @access private @@ -2367,7 +2742,8 @@ function wp_rel_nofollow_callback( $matches ) { /** * Convert one smiley code to the icon graphic file equivalent. * - * Callback handler for {@link convert_smilies()}. + * Callback handler for convert_smilies(). + * * Looks up one smiley code in the $wpsmiliestrans global array and returns an * `` string for that smiley. * @@ -2397,7 +2773,7 @@ function translate_smiley( $matches ) { } /** - * Filter the Smiley image URL before it's used in the image element. + * Filters the Smiley image URL before it's used in the image element. * * @since 2.9.0 * @@ -2475,12 +2851,12 @@ function convert_smilies( $text ) { */ function is_email( $email, $deprecated = false ) { if ( ! empty( $deprecated ) ) - _deprecated_argument( __FUNCTION__, '3.0' ); + _deprecated_argument( __FUNCTION__, '3.0.0' ); // Test for the minimum length the email can be if ( strlen( $email ) < 3 ) { /** - * Filter whether an email address is valid. + * Filters whether an email address is valid. * * This filter is evaluated under several different contexts, such as 'email_too_short', * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits', @@ -2678,7 +3054,7 @@ function iso8601_timezone_to_offset( $timezone ) { * * @since 1.5.0 * - * @param string $date_string Date and time in ISO 8601 format {@link http://en.wikipedia.org/wiki/ISO_8601}. + * @param string $date_string Date and time in ISO 8601 format {@link https://en.wikipedia.org/wiki/ISO_8601}. * @param string $timezone Optional. If set to GMT returns the time minus gmt_offset. Default is 'user'. * @return string The date and time in MySQL DateTime format - Y-m-d H:i:s. */ @@ -2717,7 +3093,7 @@ function sanitize_email( $email ) { // Test for the minimum length the email can be if ( strlen( $email ) < 3 ) { /** - * Filter a sanitized email address. + * Filters a sanitized email address. * * This filter is evaluated under several contexts, including 'email_too_short', * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits', @@ -2860,7 +3236,7 @@ function human_time_diff( $from, $to = '' ) { } /** - * Filter the human readable difference between two timestamps. + * Filters the human readable difference between two timestamps. * * @since 4.0.0 * @@ -2879,8 +3255,8 @@ function human_time_diff( $from, $to = '' ) { * that, then the string ' […]' will be appended to the excerpt. If the string * is less than 55 words, then the content will be returned as is. * - * The 55 word limit can be modified by plugins/themes using the excerpt_length filter - * The ' […]' string can be modified by plugins/themes using the excerpt_more filter + * The 55 word limit can be modified by plugins/themes using the {@see 'excerpt_length'} filter + * The ' […]' string can be modified by plugins/themes using the {@see 'excerpt_more'} filter * * @since 1.5.0 * @@ -2899,7 +3275,7 @@ function wp_trim_excerpt( $text = '' ) { $text = str_replace(']]>', ']]>', $text); /** - * Filter the number of words in an excerpt. + * Filters the number of words in an excerpt. * * @since 2.7.0 * @@ -2907,7 +3283,7 @@ function wp_trim_excerpt( $text = '' ) { */ $excerpt_length = apply_filters( 'excerpt_length', 55 ); /** - * Filter the string in the "more" link displayed after a trimmed excerpt. + * Filters the string in the "more" link displayed after a trimmed excerpt. * * @since 2.9.0 * @@ -2917,7 +3293,7 @@ function wp_trim_excerpt( $text = '' ) { $text = wp_trim_words( $text, $excerpt_length, $excerpt_more ); } /** - * Filter the trimmed excerpt string. + * Filters the trimmed excerpt string. * * @since 2.8.0 * @@ -2973,7 +3349,7 @@ function wp_trim_words( $text, $num_words = 55, $more = null ) { } /** - * Filter the text content after words have been trimmed. + * Filters the text content after words have been trimmed. * * @since 3.3.0 * @@ -2996,7 +3372,7 @@ function wp_trim_words( $text, $num_words = 55, $more = null ) { function ent2ncr( $text ) { /** - * Filter text before named entities are converted into numbered entities. + * Filters text before named entities are converted into numbered entities. * * A non-null string must be returned for the filter to be evaluated. * @@ -3295,7 +3671,7 @@ function format_for_editor( $text, $default_editor = null ) { } /** - * Filter the text after it is formatted for the editor. + * Filters the text after it is formatted for the editor. * * @since 4.3.0 * @@ -3355,7 +3731,7 @@ function esc_sql( $data ) { * Checks and cleans a URL. * * A number of characters are removed from the URL. If the URL is for displaying - * (the default behaviour) ampersands are also replaced. The 'clean_url' filter + * (the default behaviour) ampersands are also replaced. The {@see 'clean_url'} filter * is applied to the returned cleaned URL. * * @since 2.8.0 @@ -3364,7 +3740,7 @@ function esc_sql( $data ) { * @param array $protocols Optional. An array of acceptable protocols. * Defaults to return value of wp_allowed_protocols() * @param string $_context Private. Use esc_url_raw() for database usage. - * @return string The cleaned $url after the 'clean_url' filter is applied. + * @return string The cleaned $url after the {@see 'clean_url'} filter is applied. */ function esc_url( $url, $protocols = null, $_context = 'display' ) { $original_url = $url; @@ -3448,7 +3824,7 @@ function esc_url( $url, $protocols = null, $_context = 'display' ) { } /** - * Filter a string cleaned and escaped for output as a URL. + * Filters a string cleaned and escaped for output as a URL. * * @since 2.3.0 * @@ -3475,7 +3851,7 @@ function esc_url_raw( $url, $protocols = null ) { /** * Convert entities, while preserving already-encoded entities. * - * @link http://www.php.net/htmlentities Borrowed from the PHP Manual user notes. + * @link https://secure.php.net/htmlentities Borrowed from the PHP Manual user notes. * * @since 1.2.2 * @@ -3493,7 +3869,7 @@ function htmlentities2( $myHTML ) { * * Escapes text strings for echoing in JS. It is intended to be used for inline JS * (in a tag attribute, for example onclick="..."). Note that the strings have to - * be in single quotes. The filter 'js_escape' is also applied here. + * be in single quotes. The {@see 'js_escape'} filter is also applied here. * * @since 2.8.0 * @@ -3507,7 +3883,7 @@ function esc_js( $text ) { $safe_text = str_replace( "\r", '', $safe_text ); $safe_text = str_replace( "\n", '\\n', addslashes( $safe_text ) ); /** - * Filter a string cleaned and escaped for output in JavaScript. + * Filters a string cleaned and escaped for output in JavaScript. * * Text passed to esc_js() is stripped of invalid or special characters, * and properly slashed for output. @@ -3532,7 +3908,7 @@ function esc_html( $text ) { $safe_text = wp_check_invalid_utf8( $text ); $safe_text = _wp_specialchars( $safe_text, ENT_QUOTES ); /** - * Filter a string cleaned and escaped for output in HTML. + * Filters a string cleaned and escaped for output in HTML. * * Text passed to esc_html() is stripped of invalid or special characters * before output. @@ -3557,7 +3933,7 @@ function esc_attr( $text ) { $safe_text = wp_check_invalid_utf8( $text ); $safe_text = _wp_specialchars( $safe_text, ENT_QUOTES ); /** - * Filter a string cleaned and escaped for output in an HTML attribute. + * Filters a string cleaned and escaped for output in an HTML attribute. * * Text passed to esc_attr() is stripped of invalid or special characters * before output. @@ -3581,7 +3957,7 @@ function esc_attr( $text ) { function esc_textarea( $text ) { $safe_text = htmlspecialchars( $text, ENT_QUOTES, get_option( 'blog_charset' ) ); /** - * Filter a string cleaned and escaped for output in a textarea element. + * Filters a string cleaned and escaped for output in a textarea element. * * @since 3.1.0 * @@ -3602,7 +3978,7 @@ function esc_textarea( $text ) { function tag_escape( $tag_name ) { $safe_tag = strtolower( preg_replace('/[^a-zA-Z0-9_:]/', '', $tag_name) ); /** - * Filter a string cleaned and escaped for output as an HTML tag. + * Filters a string cleaned and escaped for output as an HTML tag. * * @since 2.8.0 * @@ -3706,6 +4082,10 @@ function sanitize_option( $option, $value ) { case 'blogdescription': case 'blogname': $value = $wpdb->strip_invalid_text_for_column( $wpdb->options, 'option_value', $value ); + if ( $value !== $original_value ) { + $value = $wpdb->strip_invalid_text_for_column( $wpdb->options, 'option_value', wp_encode_emoji( $original_value ) ); + } + if ( is_wp_error( $value ) ) { $error = $value->get_error_message(); } else { @@ -3841,6 +4221,14 @@ function sanitize_option( $option, $value ) { $value = esc_url_raw( $value ); $value = str_replace( 'http://', '', $value ); } + + if ( 'permalink_structure' === $option && '' !== $value && ! preg_match( '/%[^\/%]+%/', $value ) ) { + $error = sprintf( + /* translators: %s: Codex URL */ + __( 'A structure tag is required when using custom permalinks. Learn more' ), + __( 'https://codex.wordpress.org/Using_Permalinks#Choosing_your_permalink_structure' ) + ); + } break; case 'default_role' : @@ -3870,7 +4258,7 @@ function sanitize_option( $option, $value ) { } /** - * Filter an option value following sanitization. + * Filters an option value following sanitization. * * @since 2.3.0 * @since 4.3.0 Added the `$original_value` parameter. @@ -3913,8 +4301,8 @@ function map_deep( $value, $callback ) { /** * Parses a string into variables to be stored in an array. * - * Uses {@link http://www.php.net/parse_str parse_str()} and stripslashes if - * {@link http://www.php.net/magic_quotes magic_quotes_gpc} is on. + * Uses {@link https://secure.php.net/parse_str parse_str()} and stripslashes if + * {@link https://secure.php.net/magic_quotes magic_quotes_gpc} is on. * * @since 2.2.1 * @@ -3926,7 +4314,7 @@ function wp_parse_str( $string, &$array ) { if ( get_magic_quotes_gpc() ) $array = stripslashes_deep( $array ); /** - * Filter the array of variables derived from a parsed string. + * Filters the array of variables derived from a parsed string. * * @since 2.3.0 * @@ -3967,7 +4355,7 @@ function wp_pre_kses_less_than_callback( $matches ) { * WordPress implementation of PHP sprintf() with filters. * * @since 2.5.0 - * @link http://www.php.net/sprintf + * @link https://secure.php.net/sprintf * * @param string $pattern The string which formatted args are inserted. * @param mixed $args ,... Arguments to be formatted into the $pattern string. @@ -4011,7 +4399,7 @@ function wp_sprintf( $pattern ) { } /** - * Filter a fragment from the pattern passed to wp_sprintf(). + * Filters a fragment from the pattern passed to wp_sprintf(). * * If the fragment is unchanged, then sprintf() will be run on the fragment. * @@ -4057,7 +4445,7 @@ function wp_sprintf_l( $pattern, $args ) { return ''; /** - * Filter the translated delimiters used by wp_sprintf_l(). + * Filters the translated delimiters used by wp_sprintf_l(). * Placeholders (%s) are included to assist translators and then * removed before the array of strings reaches the filter. * @@ -4244,18 +4632,21 @@ function wp_strip_all_tags($string, $remove_breaks = false) { } /** - * Sanitize a string from user input or from the db + * Sanitizes a string from user input or from the database. * - * check for invalid UTF-8, - * Convert single < characters to entity, - * strip all tags, - * remove line breaks, tabs and extra white space, - * strip octets. + * - Checks for invalid UTF-8, + * - Converts single `<` characters to entities + * - Strips all tags + * - Removes line breaks, tabs, and extra whitespace + * - Strips octets * * @since 2.9.0 * - * @param string $str - * @return string + * @see wp_check_invalid_utf8() + * @see wp_strip_all_tags() + * + * @param string $str String to sanitize. + * @return string Sanitized string. */ function sanitize_text_field( $str ) { $filtered = wp_check_invalid_utf8( $str ); @@ -4280,7 +4671,7 @@ function sanitize_text_field( $str ) { } /** - * Filter a sanitized text field string. + * Filters a sanitized text field string. * * @since 2.9.0 * @@ -4342,7 +4733,7 @@ function capital_P_dangit( $text ) { function sanitize_mime_type( $mime_type ) { $sani_mime_type = preg_replace( '/[^-+*.a-zA-Z0-9\/]/', '', $mime_type ); /** - * Filter a mime type following sanitization. + * Filters a mime type following sanitization. * * @since 3.1.3 * @@ -4369,7 +4760,7 @@ function sanitize_trackback_urls( $to_ping ) { $urls_to_ping = array_map( 'esc_url_raw', $urls_to_ping ); $urls_to_ping = implode( "\n", $urls_to_ping ); /** - * Filter a list of trackback URLs following sanitization. + * Filters a list of trackback URLs following sanitization. * * The string returned here consists of a space or carriage return-delimited list * of trackback URLs. @@ -4462,7 +4853,7 @@ function wp_spaces_regexp() { if ( empty( $spaces ) ) { /** - * Filter the regexp for common whitespace characters. + * Filters the regexp for common whitespace characters. * * This string is substituted for the \s sequence as needed in regular * expressions. For websites not written in English, different characters @@ -4513,12 +4904,12 @@ img.emoji { } /** + * Print the inline Emoji detection script if it is not already printed. * - * @global string $wp_version + * @since 4.2.0 * @staticvar bool $printed */ function print_emoji_detection_script() { - global $wp_version; static $printed = false; if ( $printed ) { @@ -4527,24 +4918,57 @@ function print_emoji_detection_script() { $printed = true; + _print_emoji_detection_script(); +} + +/** + * Prints inline Emoji dection script + * + * @ignore + * @since 4.6.0 + * @access private + * + * @global string $wp_version WordPress version string. + */ +function _print_emoji_detection_script() { + global $wp_version; + $settings = array( /** - * Filter the URL where emoji images are hosted. + * Filters the URL where emoji png images are hosted. * * @since 4.2.0 * - * @param string The emoji base URL. + * @param string The emoji base URL for png images. */ - 'baseUrl' => apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/72x72/' ), + 'baseUrl' => apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/2/72x72/' ), /** - * Filter the extension of the emoji files. + * Filters the extension of the emoji png files. * * @since 4.2.0 * - * @param string The emoji extension. Default .png. + * @param string The emoji extension for png files. Default .png. */ 'ext' => apply_filters( 'emoji_ext', '.png' ), + + /** + * Filters the URL where emoji SVG images are hosted. + * + * @since 4.6.0 + * + * @param string The emoji base URL for svg images. + */ + 'svgUrl' => apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2/svg/' ), + + /** + * Filters the extension of the emoji SVG files. + * + * @since 4.6.0 + * + * @param string The emoji extension for svg files. Default .svg. + */ + 'svgExt' => apply_filters( 'emoji_svg_ext', '.svg' ), ); $version = 'ver=' . $wp_version; @@ -4582,7 +5006,7 @@ function print_emoji_detection_script() { ?>