Ticket #19855: 19855-3.patch
File 19855-3.patch, 4.6 KB (added by , 13 years ago) |
---|
-
deprecated.php
2976 2976 return $theme; 2977 2977 2978 2978 return wp_get_theme()->get('Name'); 2979 } 2980 No newline at end of file 2979 } 2980 2981 /** 2982 * Accepts matches array from preg_replace_callback in wpautop() or a string. 2983 * 2984 * Ensures that the contents of a <<pre>>...<</pre>> HTML block are not 2985 * converted into paragraphs or line-breaks. 2986 * 2987 * @since 1.2.0 2988 * @deprecated 3.4.0 2989 * 2990 * @param array|string $matches The array or string 2991 * @return string The pre block without paragraph/line-break conversion. 2992 */ 2993 function clean_pre($matches) { 2994 _deprecated_function( __FUNCTION__, '3.4' ); 2995 2996 if ( is_array($matches) ) 2997 $text = $matches[1] . $matches[2] . "</pre>"; 2998 else 2999 $text = $matches; 3000 3001 $text = str_replace('<br />', '', $text); 3002 $text = str_replace('<p>', "\n", $text); 3003 $text = str_replace('</p>', '', $text); 3004 3005 return $text; 3006 } 3007 -
formatting.php
173 173 } 174 174 175 175 /** 176 * Accepts matches array from preg_replace_callback in wpautop() or a string.177 *178 * Ensures that the contents of a <<pre>>...<</pre>> HTML block are not179 * converted into paragraphs or line-breaks.180 *181 * @since 1.2.0182 *183 * @param array|string $matches The array or string184 * @return string The pre block without paragraph/line-break conversion.185 */186 function clean_pre($matches) {187 if ( is_array($matches) )188 $text = $matches[1] . $matches[2] . "</pre>";189 else190 $text = $matches;191 192 $text = str_replace('<br />', '', $text);193 $text = str_replace('<p>', "\n", $text);194 $text = str_replace('</p>', '', $text);195 196 return $text;197 }198 199 /**200 176 * Replaces double line-breaks with paragraph elements. 201 177 * 202 178 * A group of regex replaces used to identify text formatted with newlines and … … 207 183 * @since 0.71 208 184 * 209 185 * @param string $pee The text which has to be formatted. 210 * @param int|bool $br Optional. If set, this will convert all remaining line-breaks after paragraphing. Default true.186 * @param bool $br Optional. If set, this will convert all remaining line-breaks after paragraphing. Default true. 211 187 * @return string Text which has been converted into correct paragraph tags. 212 188 */ 213 function wpautop($pee, $br = 1) { 189 function wpautop($pee, $br = true) { 190 $has_pre = false; 214 191 215 192 if ( trim($pee) === '' ) 216 193 return ''; 194 217 195 $pee = $pee . "\n"; // just to make things a little easier, pad the end 196 197 if ( strpos($pee, '<pre') !== false ) { 198 $has_pre = true; 199 $pee_parts = explode( '</pre>', $pee ); 200 201 $last_pee = array_pop($pee_parts); 202 $pee = ''; 203 204 foreach ( $pee_parts as $pee_part ) { 205 $pee .= preg_replace_callback('/<pre(?: [^>]+)*>.+/s', '_autop_newline_preservation_helper', $pee_part) . '</pre>'; 206 } 207 208 $pee .= $last_pee; 209 $pee = str_ireplace( '<pre', "\n\n<pre", $pee ); 210 } 211 218 212 $pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee); 219 213 // Space things out a little 220 214 $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)'; … … 239 233 $pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee); 240 234 $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee); 241 235 $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee); 242 if ( $br) {236 if ( $br ) { 243 237 $pee = preg_replace_callback('/<(script|style).*?<\/\\1>/s', '_autop_newline_preservation_helper', $pee); 244 238 $pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks 245 $pee = str_replace('<WPPreserveNewline />', "\n", $pee);246 239 } 247 240 $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee); 248 241 $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee); 249 if (strpos($pee, '<pre') !== false)250 $pee = preg_replace_callback('!(<pre[^>]*>)(.*?)</pre>!is', 'clean_pre', $pee );251 242 $pee = preg_replace( "|\n</p>$|", '</p>', $pee ); 252 243 244 if ( $br || $has_pre ) 245 $pee = str_replace('<autop newline>', "\n", $pee); 246 253 247 return $pee; 254 248 } 255 249 … … 262 256 * @returns string 263 257 */ 264 258 function _autop_newline_preservation_helper( $matches ) { 265 return str_replace( "\n", "<WPPreserveNewline />", $matches[0]);259 return str_replace( array("\r\n", "\r", "\n"), '<autop newline>', $matches[0] ); 266 260 } 267 261 268 262 /**