Changeset 33524 for branches/3.8/src/wp-includes/formatting.php
- Timestamp:
- 07/31/2015 01:45:01 AM (11 years ago)
- File:
-
- 1 edited
-
branches/3.8/src/wp-includes/formatting.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/3.8/src/wp-includes/formatting.php
r33388 r33524 249 249 $pee = str_replace(array("\r\n", "\r"), "\n", $pee); // cross-platform newlines 250 250 251 // Strip newlines from all elements.252 $pee = wp_replace_in_html_tags( $pee, array( "\n" => " " ) );251 // Find newlines in all elements and add placeholders. 252 $pee = wp_replace_in_html_tags( $pee, array( "\n" => " <!-- wpnl --> " ) ); 253 253 254 254 if ( strpos($pee, '<object') !== false ) { … … 282 282 $pee = str_replace(array_keys($pre_tags), array_values($pre_tags), $pee); 283 283 284 // Restore newlines in all elements. 285 $pee = str_replace( " <!-- wpnl --> ", "\n", $pee ); 286 284 287 return $pee; 288 } 289 290 /** 291 * Separate HTML elements and comments from the text. 292 * 293 * @since 4.2.4 294 * 295 * @param string $input The text which has to be formatted. 296 * @return array The formatted text. 297 */ 298 function wp_html_split( $input ) { 299 static $regex; 300 301 if ( ! isset( $regex ) ) { 302 $comments = 303 '!' // Start of comment, after the <. 304 . '(?:' // Unroll the loop: Consume everything until --> is found. 305 . '-(?!->)' // Dash not followed by end of comment. 306 . '[^\-]*+' // Consume non-dashes. 307 . ')*+' // Loop possessively. 308 . '(?:-->)?'; // End of comment. If not found, match all input. 309 310 $cdata = 311 '!\[CDATA\[' // Start of comment, after the <. 312 . '[^\]]*+' // Consume non-]. 313 . '(?:' // Unroll the loop: Consume everything until ]]> is found. 314 . '](?!]>)' // One ] not followed by end of comment. 315 . '[^\]]*+' // Consume non-]. 316 . ')*+' // Loop possessively. 317 . '(?:]]>)?'; // End of comment. If not found, match all input. 318 319 $regex = 320 '/(' // Capture the entire match. 321 . '<' // Find start of element. 322 . '(?(?=!--)' // Is this a comment? 323 . $comments // Find end of comment. 324 . '|' 325 . '(?(?=!\[CDATA\[)' // Is this a comment? 326 . $cdata // Find end of comment. 327 . '|' 328 . '[^>]*>?' // Find end of element. If not found, match all input. 329 . ')' 330 . ')' 331 . ')/s'; 332 } 333 334 return preg_split( $regex, $input, -1, PREG_SPLIT_DELIM_CAPTURE ); 285 335 } 286 336 … … 296 346 function wp_replace_in_html_tags( $haystack, $replace_pairs ) { 297 347 // Find all elements. 298 $comments = 299 '!' // Start of comment, after the <. 300 . '(?:' // Unroll the loop: Consume everything until --> is found. 301 . '-(?!->)' // Dash not followed by end of comment. 302 . '[^\-]*+' // Consume non-dashes. 303 . ')*+' // Loop possessively. 304 . '(?:-->)?'; // End of comment. If not found, match all input. 305 306 $regex = 307 '/(' // Capture the entire match. 308 . '<' // Find start of element. 309 . '(?(?=!--)' // Is this a comment? 310 . $comments // Find end of comment. 311 . '|' 312 . '[^>]*>?' // Find end of element. If not found, match all input. 313 . ')' 314 . ')/s'; 315 316 $textarr = preg_split( $regex, $haystack, -1, PREG_SPLIT_DELIM_CAPTURE ); 348 $textarr = wp_html_split( $haystack ); 317 349 $changed = false; 318 350
Note: See TracChangeset
for help on using the changeset viewer.