在PHP中如何解决setlocale冲突

时间:2019-06-19 21:55:26

标签: php locale

在php插件中,我编写了此函数:

function is_number( $nbr ){
    $locale= get_locale();
    setlocale( LC_NUMERIC, $locale );
    return ( is_numeric( $nbr ) || is_float( $nbr ) );
}

...当然还有一个命名空间。

问题在于该函数生成了一个CSS错误,因为在另一个代码块中,有一个php函数可以生成不透明的float并通过rgba(0,0,0,0.5)之类的字符串创建一个rbga:

>
function stylesheet_get_opacity( $opacity = 0 ) {
    $opacity = ($opacity > 0) ? $opacity/100 : 0;
    return $opacity;
} 

因此$opacity应该一直像0.5一样,而不要昏迷。但是,如果我的函数将设置为local并且您在法国,例如,如果输入$opacity等于50,则输出将是0,5而不是0.5最后破坏css。

那么,如何在不更改代码stylesheet_get_opacity的情况下解决此问题呢?

也许我应该在数字检查后重设setLocale,但是该怎么做?

类似的东西:

function is_number( $nbr ){
    $locale= get_locale();
    setlocale( LC_NUMERIC, $locale );
    $output = ( is_numeric( $nbr ) || is_float( $nbr ) );
    //Here reset setlocale
    return $output;
}

1 个答案:

答案 0 :(得分:0)

我从documentation

找到了解决方案

就我而言,NULL影响语言环境设置并将其重置。 0的值无效。

这是完整的解决方案:

function is_number( $nbr ){
    $locale= get_locale();
    setlocale( LC_NUMERIC, $locale );
    $output = ( is_numeric( $nbr ) || is_float( $nbr ) );
    setlocale( LC_NUMERIC, NULL );
    return $output;
}