php - 在php中如何解决setlocale冲突
问题描述
在一个 php 插件中,我编写了这个函数:
function is_number( $nbr ){
$locale= get_locale();
setlocale( LC_NUMERIC, $locale );
return ( is_numeric( $nbr ) || is_float( $nbr ) );
}
...当然有一个命名空间。
问题是该函数会生成一个 css 错误,因为在另一个代码块中,有一个 php 函数来生成不透明度浮点数并创建一个 rbga 作为字符串,rgba(0,0,0,0.5)
这要感谢这个函数:
function stylesheet_get_opacity( $opacity = 0 ) {
$opacity = ($opacity > 0) ? $opacity/100 : 0;
return $opacity;
}
所以$opacity
应该一直像0.5
而不是昏迷。但是,如果我的函数将设置为本地并且您在法国,例如,如果输入$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;
}
解决方案
在我的情况下,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;
}
推荐阅读
- sql-server - DEFAULT ((0)) 和 DEFAULT (0) 有什么区别??有没有?
- sql - SQL Server 挂起查询 2 个独立表
- android - 用 Google 令牌交换 IdentityServer 令牌
- azure - 通过 java sdk 自动删除 Azure Storage 中的旧表
- slack - 仅在移动设备上触发 Slack 命令超时错误(3000 毫秒之前)
- powershell - 为 cmdlet 定义创建其他默认参数
- c# - 如何在仍然允许可配置性/设置的同时重构有状态的单例?
- html - 如何从 API 获取 json 并以 HTML 格式显示?
- sql - Snowflake 的 ER 建模工具
- installation - NSIS VPatch 找不到注册表值