Fix using htmlspecialchars()
whit the $double_encode
parameter. PHP < 5.4 doesn't validate the entities.
Props miqrogroove. Fixes #17780. git-svn-id: https://develop.svn.wordpress.org/trunk@32851 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
4d8c4295f3
commit
5cb9a4b019
@ -688,6 +688,12 @@ function _wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = fals
|
||||
$quote_style = ENT_NOQUOTES;
|
||||
}
|
||||
|
||||
if ( ! $double_encode ) {
|
||||
// Guarantee every &entity; is valid, convert &garbage; into &garbage;
|
||||
// This is required for PHP < 5.4.0 because ENT_HTML401 flag is unavailable.
|
||||
$string = wp_kses_normalize_entities( $string );
|
||||
}
|
||||
|
||||
$string = @htmlspecialchars( $string, $quote_style, $charset, $double_encode );
|
||||
|
||||
// Backwards compatibility
|
||||
|
@ -34,7 +34,7 @@ class Tests_Formatting_EscHtml extends WP_UnitTestCase {
|
||||
|
||||
function test_ignores_existing_entities() {
|
||||
$source = '& £ " &';
|
||||
$res = '& £ " &';
|
||||
$res = '& £ " &';
|
||||
$this->assertEquals( $res, esc_html($source) );
|
||||
}
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ class Tests_Formatting_WPSpecialchars extends WP_UnitTestCase {
|
||||
return array(
|
||||
array(
|
||||
'This & that, this & that, — " " Ú " " " " " $ ×',
|
||||
'This & that, this & that, — " &QUOT; Ú " " " " " &dollar; ×',
|
||||
'This & that, this & that, — " &QUOT; Ú " " " " " &dollar; ×',
|
||||
),
|
||||
array(
|
||||
'&& && && &;',
|
||||
|
Loading…
Reference in New Issue
Block a user