怎么查看php文件编码,php如何转换文件编码

php转换文件编码的方法:使用函数【str_replace】转换文件编码到新文件夹,代码为【$newPath = str_replace(THIS_PATH, THIS_PATH . DS . Cover, $v)】。

79638dfe92a84826c004c2a96b9d8bbb.png

php转换文件编码的方法:

代码<?php

define('THIS_FILE', __FILE__); // 此文件路径,请勿修改,将跳过此文件

define('THIS_PATH', dirname(THIS_FILE)); // 当前路径,可修改

define('Cover', 'new'); // 是否直接覆盖本文件(改为 true 不加单引号,危险),建议写入其他地址(相对于当前路径)

define('DS', DIRECTORY_SEPARATOR); // Linux改为'/',Windows为'\\'

define('ICONV', 'UTF-8'); // 最终转换编码格式

function eachFile($path, $files = [])

{

if (Cover !== true && $path == THIS_PATH . DS . Cover) {

return $files;

}

if (preg_match("/[\x7f-\xff]/", $path)) {

$path = iconv('UTF-8', 'GBK', $path);

}

if (is_file($path)) {

$files[] = $path;

return $files;

}

$list = scandir($path);

foreach ($list as $k => $v) {

if ($v !== '.' && $v !== '..') {

$p = $path . DS . $v;

// 路径转码GBK

if (preg_match("/[\x7f-\xff]/", $p)) {

$p = iconv('UTF-8', 'GBK', $p);

}

if (is_dir($p)) {

$files = eachFile($p, $files);

} else {

$files[] = $p;

}

}

}

return $files;

}

$files = eachFile(THIS_PATH);

foreach ($files as $k => $v) {

$ext = pathinfo($v, PATHINFO_EXTENSION);

if (in_array($ext, ['txt', 'php', 'css', 'js', 'htm', 'html'])) {

if ($v == THIS_FILE) continue;

// 获取内容并转码

$contents_before = file_get_contents($v);

$oldIconv = mb_detect_encoding($contents_before, array('ASCII', 'GB2312', 'GBK', 'UTF-8', 'BIG5'));

$contents_after = iconv($oldIconv, ICONV, $contents_before);

if (Cover !== true) {

// 判断新文件夹是否存在

$newPath = str_replace(THIS_PATH, THIS_PATH . DS . Cover, $v);

if (!file_exists(dirname($newPath))) {

mkdir(dirname($newPath), 0755, true);

}

// 覆盖写入文件(不存在自动创建)

file_put_contents($newPath, $contents_after);

} else {

file_put_contents($v, $contents_after);

}

// 输出

echo "{$v} 已转换


";

} else {

$newPath = str_replace(THIS_PATH, THIS_PATH . DS . Cover, $v);

if (Cover !== true && !file_exists($newPath)) {

if (!file_exists(dirname($newPath))) {

mkdir(dirname($newPath), 0755, true);

}

copy($v, $newPath);

echo "{$v} 复制文件到新路径 {$newPath}


";

}

}

}

功能自定义文件夹

跳过本文件(同一文件夹)及新文件夹(多次转码)

文件格式限制

转换文件编码到新文件夹(推荐)或本文件

复制无需转码文件到新文件夹

注意暂未在Linux上测试

只能转码文本文件相关免费学习推荐:php编程(视频)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值