首页 > php开发 > PHP批量修改静态html文件编码的例子

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

一堆的文件编码都是ANSI的,本来想用linux shell批量修改文件编码,却不太熟悉,写了个PHP脚本批量修改html文件的编码,代码如下:

<?php 
//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扩展的函数,代码如下:

<?php 
/** 
 * 检测编码 
 * string mb_detect_encoding ( string $str [, mixed $encoding_list = mb_detect_order() [, bool $strict = false ]] ) 
 *  
 * @param $str 要检测的字符串 
 * @param $encoding_list 检测编码的顺序 
 * @param $strict 是否严格检测编码 
 */ 
$str = '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');
?>


本文地址:http://www.phprm.com/develop/fs3480.html

转载随意,但请附上文章地址:-)

标签:php修改静态html文件

发表留言