Typo3 was relaying on the feature of base converter
functions silently removing invalid chars so, for example:
'U+00A0' => '00A0' => 160
Since php74, the existence of those invalid chars do produce
a deprecation warning, no matter the outcome continues being the same.
So, here, we are just converting that invalud 'U+' by '0x'
array_push($code_decomp, chr($ord));
}
}
- $ascii[$this->UnumberToChar(hexdec($from))] = join('', $code_decomp);
+ $ascii[$this->UnumberToChar(hexdec(str_replace('U+', '0x', $from)))] = join('', $code_decomp);
}
// add numeric decompositions
foreach ($number as $from => $to) {
- $utf8_char = $this->UnumberToChar(hexdec($from));
+ $utf8_char = $this->UnumberToChar(hexdec(str_replace('U+', '0x', $from)));
if (!isset($ascii[$utf8_char])) {
$ascii[$utf8_char] = $to;
}
Local changes (to verify/apply with new imports):
+- MDL-67316: PHP 7.4 compatibility. Wrong chars in hexdec() operations.
+ Ensure that all the calls to hexdec() are passing exclusively
+ correct hex chars. Before php74 they were silently discarded but
+ with php74 a deprecation warning is produced. We haven't looked how
+ this is fixed upstream because plans include to remove this
+ library from core (see MDL-65809)
+
- MDL-67017: PHP 7.4 compatibility. Curly brackets.
Remove all the deprecated curly bracket uses {} to access to strings/arrays
by key. We haven't looked how this is fixed upstream because plans include