You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
if ('html5lib' === $this->parser || 'html5' === $this->parser) {
1441
1441
$this->dom = (newHTML5())->loadHTML($this->html);
@@ -1455,43 +1455,19 @@ private function loadHtml()
1455
1455
}
1456
1456
1457
1457
/**
1458
-
* Tries to insert `meta[charset]` tag into the proper place in the passed HTML document.
1458
+
* Converts non-ASCII UTF-8 characters to numeric HTML entities.
1459
1459
*
1460
1460
* `DOMDocument::loadHTML` will parse HTML documents as ISO-8859-1 if there is no `meta[charset]` tag.
1461
1461
* This means that UTF-8-encoded HTML fragments such as those coming from JSON-LD `articleBody` field would be parsed with incorrect encoding.
1462
-
* Unfortunately, we cannot just put the tag at the start of the HTML fragment, since that would cause parser to auto-insert a `html` element, losing the attributes of the original `html` tag.
1463
1462
*
1464
1463
* @param string $html UTF-8 encoded document
1465
1464
*/
1466
-
privatestaticfunctionensureMetaCharset($html)
1465
+
privatestaticfunctionentitizeNonAscii($html)
1467
1466
{
1468
-
$charsetTag = '<meta charset="utf-8">';
1467
+
$convmap = [
1468
+
0x80, 0x1FFFFF, 0, 0x10FFFF,
1469
+
];
1469
1470
1470
-
// Only look at first 1024 bytes since, according to HTML5 specification,
1471
-
// that’s where <meta> elements declaring a character encoding must be located.
$readability = $this->getReadability('<!DOCTYPE html><html lang="et"><head><title>Tõde ja õigus I</title> <meta charset="utf-8"></head><body><p>See oli läinud aastasaja kolmanda veerandi lõpul. Päike lähenes silmapiirile, seistes sedavõrd madalas, et enam ei ulatunud valgustama ei mäkke ronivat hobust, kes puutelgedega vankrit vedas, ei vankril istuvat noort naist ega ka ligi kolmekümnelist meest, kes kõndis vankri kõrval.</p></body></html>', 'https://et.wikisource.org/wiki/T%C3%B5de_ja_%C3%B5igus_I/I');
'<html lang="fr"><head><meta charset="utf-8"></head><body><article>' . str_repeat('<p>This is the awesome content :)</p>', 7) . '</article></body></html>',
510
+
'<html lang="fr"><head><meta charset="utf-8"></head><body><article>' . str_repeat('<p>Tous les êtres humains naissent libres et égaux en dignité et en droits. Ils sont doués de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternité.</p>', 7) . '</article></body></html>',
497
511
'fr',
498
512
],
499
513
'head' => [
500
-
'<html lang="fr"><head><title>Foo</title></head><body><article>' . str_repeat('<p>This is the awesome content :)</p>', 7) . '</article></body></html>',
514
+
'<html lang="fr"><head><title>Foo</title></head><body><article>' . str_repeat('<p>Tous les êtres humains naissent libres et égaux en dignité et en droits. Ils sont doués de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternité.</p>', 7) . '</article></body></html>',
501
515
'fr',
502
516
],
503
517
'headless' => [
504
-
'<html lang="fr"><body><article>' . str_repeat('<p>This is the awesome content :)</p>', 7) . '</article></body></html>',
518
+
'<html lang="fr"><body><article>' . str_repeat('<p>Tous les êtres humains naissent libres et égaux en dignité et en droits. Ils sont doués de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternité.</p>', 7) . '</article></body></html>',
505
519
'fr',
506
520
// tidy would add <head> tag.
507
521
false,
508
522
],
509
523
'fragment' => [
510
-
'<article>' . str_repeat('<p>This is the awesome content :)</p>', 7) . '</article>',
524
+
'<article>' . str_repeat('<p>Tous les êtres humains naissent libres et égaux en dignité et en droits. Ils sont doués de raison et de conscience et doivent agir les uns envers les autres dans un esprit de fraternité.</p>', 7) . '</article>',
511
525
'',
512
526
// tidy would add <html>.
513
527
false,
@@ -526,6 +540,8 @@ public function testHtmlLang($html, $lang, $useTidy = true)
0 commit comments