首页 > 解决方案 > tidy_parse_string 更改先前使用 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"
?>

有一个选项可以防止它吗?

PHPTidy文档中没有关于它的内容。


我知道我可以在整理功能后简单地重新更改我的语言环境

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

/* [...] */

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

但我想知道这是一个功能、一个错误还是其他什么。

谢谢

标签: phplocaletidy

解决方案


这是一个错误: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);
?>

推荐阅读