tidy_parse_string 更改之前使用 setlocale 设置的语言环境

tidy_parse_string change the locale previously set with setlocale

函数 tidy_parse_string 将我的区域设置更改为 'C'。

<?php
setlocale(LC_ALL, 'de_DE');

/* [...] */

echo setlocale(LC_ALL, 0); // Show "de_DE"
$tidy = tidy_parse_string($text, $config, 'UTF8');
echo setlocale(LC_ALL, 0); // show "C" instead of "de_DE"
?>

有防止的选项吗?

PHP and Tidy 文档中没有相关内容。


我知道我可以在

整理功能后简单地重新更改我的语言环境
<?php
setlocale(LC_ALL, 'de_DE');

/* [...] */

$oldLocale = setlocale(LC_ALL, 0);
$tidy = tidy_parse_string($text, $config, 'UTF8');
setlocale(LC_ALL, $oldLocale);
?>

但我想知道这是功能、错误还是其他原因。

谢谢

这是一个错误:https://github.com/htacg/tidy-html5/issues/770

因此解决方法是在调用后插入 setlocale。

<?php
setlocale(LC_ALL, 'de_DE');

/* [...] */

$oldLocale = setlocale(LC_ALL, 0);
$tidy = tidy_parse_string($text, $config, 'UTF8');
setlocale(LC_ALL, $oldLocale);
?>