PHP批量修改静态html文件编码的例子

作者:袖梨 2022-06-24
代码如下 复制代码


//1.遍历出所有html文件
$dir = './jquery/jquery/'; //文件目录、

$move_to = './jquery/jquery_new/';

foreach(glob($dir . '*.htm*') as $html)
{
//读取文件
$fp = fopen($html, 'a+');
$html_string = fread($fp, filesize($html));

//转码操作
$html_string = str_replace('charset=gb2312', 'charset=UTF-8', $html_string);

$file_code = mb_detect_encoding()($html_string, array('UTF-8','GBK','LATIN1','BIG5'));

if($file_code = 'CP936')
{
$html_string = mb_convert_encoding($html_string ,'utf-8' , 'gbk');
}

//获取文件名
$slice = explode('/', $html);
$file_name = end($slice);

//移到新文件
file_put_contents($move_to . $file_name, $html_string);

fclose($fp);
}

echo 'ok, 执行完成';

其实主要用到mb_detect_encoding检测编码;使用mb_convert_encoding转换编码;这是mbstring扩展的函数

代码如下 复制代码



/**
* 检测编码
* string mb_detect_encoding ( string $str [, mixed $encoding_list = mb_detect_order() [, bool $strict = false ]] )
*
* @param $str 要检测的字符串
* @param $encoding_list 检测编码的顺序
* @param $strict 是否严格检测编码
*/

$str = 'https://www.111cn.net-PHP点点通';
echo $file_code = mb_detect_encoding($str, array('UTF-8','GBK','LATIN1','BIG5')); //UTF-8

/**
* 转换编码
* string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )
*
* @param $str 要转换的字符串
* @param $to_encoding 转换后的字符串
* @param $from_encoding
*/

echo mb_convert_encoding($str, 'GBK', 'UTF-8');

相关文章

精彩推荐