Provide fallbacks for use of mb_convert_encoding() in HtmlFormatter
Since we don't strictly require mbstring in core, provide fallbacks for the use of mb_convert_encoding() to go to/from 'HTML-ENTITIES' in HtmlFormatter. Bug: T62174 Change-Id: I2dcde96e0e68a7d141f2ba79558b20e1d9c799ec
This commit is contained in:
parent
d09781f809
commit
21ae7bdb3a
1 changed files with 17 additions and 2 deletions
|
|
@ -63,7 +63,15 @@ class HtmlFormatter {
|
|||
*/
|
||||
public function getDoc() {
|
||||
if ( !$this->doc ) {
|
||||
$html = mb_convert_encoding( $this->html, 'HTML-ENTITIES', 'UTF-8' );
|
||||
// DOMDocument::loadHTML apparently isn't very good with encodings, so
|
||||
// convert input to ASCII by encoding everything above 128 as entities.
|
||||
if ( function_exists( 'mb_convert_encoding' ) ) {
|
||||
$html = mb_convert_encoding( $this->html, 'HTML-ENTITIES', 'UTF-8' );
|
||||
} else {
|
||||
$html = preg_replace_callback( '/[\x{80}-\x{10ffff}]/u', function ( $m ) {
|
||||
return '&#' . UtfNormal\Utils::utf8ToCodepoint( $m[0] ) . ';';
|
||||
}, $this->html );
|
||||
}
|
||||
|
||||
// Workaround for bug that caused spaces before references
|
||||
// to disappear during processing:
|
||||
|
|
@ -244,7 +252,14 @@ class HtmlFormatter {
|
|||
) );
|
||||
}
|
||||
$html = $replacements->replace( $html );
|
||||
$html = mb_convert_encoding( $html, 'UTF-8', 'HTML-ENTITIES' );
|
||||
|
||||
if ( function_exists( 'mb_convert_encoding' ) ) {
|
||||
// Just in case the conversion in getDoc() above used named
|
||||
// entities that aren't known to html_entity_decode().
|
||||
$html = mb_convert_encoding( $html, 'UTF-8', 'HTML-ENTITIES' );
|
||||
} else {
|
||||
$html = html_entity_decode( $html, ENT_COMPAT, 'utf-8' );
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue