Protect `<pre>` tags when parsing oEmbed responses in `WP_oEmbed::_strip_newlines()` in `DOMDocument` is available.
Fixes #31214. Built from https://develop.svn.wordpress.org/trunk@31415 git-svn-id: http://core.svn.wordpress.org/trunk@31396 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
4d12ccadd8
commit
cb3ef90d24
|
@ -559,11 +559,31 @@ class WP_oEmbed {
|
|||
* @return string Possibly modified $html
|
||||
*/
|
||||
public function _strip_newlines( $html, $data, $url ) {
|
||||
if ( false !== strpos( $html, "\n" ) )
|
||||
$html = str_replace( array( "\r\n", "\n" ), '', $html );
|
||||
|
||||
if ( false === strpos( $html, "\n" ) ) {
|
||||
return $html;
|
||||
}
|
||||
|
||||
$pre = array();
|
||||
$tokens = array();
|
||||
if ( class_exists( 'DOMDocument' ) ) {
|
||||
$token = '__PRE__';
|
||||
$replace = array();
|
||||
$dom = new DOMDocument();
|
||||
$dom->loadHTML( $html );
|
||||
$tags = $dom->getElementsByTagName( 'pre' );
|
||||
foreach ( $tags as $i => $tag ) {
|
||||
$tag_html = $dom->saveHTML( $tag );
|
||||
$tag_token = $token . $i;
|
||||
$replace[ $tag_token ] = $tag_html;
|
||||
$html = str_replace( $tag_html, $tag_token, $html );
|
||||
}
|
||||
$pre = array_values( $replace );
|
||||
$tokens = array_keys( $replace );
|
||||
}
|
||||
|
||||
$stripped = str_replace( array( "\r\n", "\n" ), '', $html );
|
||||
return str_replace( $tokens, $pre, $stripped );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* @global string $wp_version
|
||||
*/
|
||||
$wp_version = '4.2-alpha-31414';
|
||||
$wp_version = '4.2-alpha-31415';
|
||||
|
||||
/**
|
||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||
|
|
Loading…
Reference in New Issue