不多说了,看标题就明白了,生产环境的代码,需要的拿去。
如果用得上,感恩您的打赏
- 检查是否为UTF-8字符集
- 检查是否为UTF-8 BOM文件
- 将GBK文件转换成UTF8文件
- 检查是否带UTF-8的BOM头
- 移除字符串的BOM
<?php
/**
* 字符串BOM检测以及UTF-8的转换处理
* @author JerryLi
*
*/
class StringBom{
/**
* 移除字符串的BOM
*
* @param string $str 输入字符串
* @return string 输出字符串
*/
static public function removeBOM($str): string{
return self::checkBom($str)?substr($str, 3):$str;
}
/**
* 检查是否带UTF-8的BOM头
* @param string $str
* @return boolean
*/
static public function checkBom($str): bool{
$str_3 = substr($str, 0, 3);
return $str_3 == pack('CCC',0xef,0xbb,0xbf);
}
/**
* 检查是否为UTF-8 BOM文件
* @param string $sFileName 文件名
* @return boolean
*/
static public function isBomFile(string $sFileName): bool{
$hf = fopen($sFileName, 'r');
if (false !== $hf){
$str = fgets($hf,3);
fclose($str);
return self::checkBom($str);
}else{
return false;
}
}
/**
* 检查是否为UTF-8字符集
* @param string $sStr
* @return boolean
*/
static public function isUtf8(string $sStr): bool{
$sFileType = mb_detect_encoding($sStr , array('UTF-8','GBK','LATIN1','BIG5'));
return $sFileType === 'UTF-8';
}
/**
* 检测文件是否为UTF-8字符集的文件
* @param string $sFileName 文件名
* @return boolean
*/
static public function isUtf8File(string $sFileName): bool{
if (file_exists($sFileName)){
return self::isUtf8(file_get_contents($sFileName));
}else{
return false;
}
}
/**
* 将GBK文件转换成UTF8文件
* @param string $sFileName 文件名
* @return boolean
*/
static public function convertGbk2Utf8File(string $sFileName): bool{
if (file_exists($sFileName)){
file_put_contents($sFileName, iconv('GBK','UTF-8', file_get_contents($sFileName)));
return true;
}
return false;
}
}