[php] <?php $path = dirname(__FILE__); scandDir($path); function bomtoutf8($filename) { $ef = 239; $bb = 187; $bf = 191; if (is_dir($filename)) return; $fd = fopen($filename, "rb"); if (!$fd) exit($filename); $headers = fread($fd, 3); fclose($fd); if (strlen($headers) < 3) return; if (ord($headers[0]) == $ef && ord($headers[1]) == $bb && ord($headers[2]) == $bf ) { echo $filename, "\n"; $content = file_get_contents($filename); if (!$content) { exit("file get contents failed"); } $len = strlen($content); $content = substr($content, 3); if ($content === false && $len!=3) { exit("sbustr failed"); } else if ($content === false && $len==3){ $content = ""; } $ret = file_put_contents($filename, $content, LOCK_EX); if ($ret === false) { exit("file put contents failed"); } echo "successed file ", $filename, "\n"; } } function scandDir($path) { $d = dir($path); if (!$d) exit("dir failed"); while (false !== ($entry = $d->read())) { if ($entry == '.' || $entry == '..') { continue; } $filename = $path . DIRECTORY_SEPARATOR . $entry; // echo $filename, "\n"; if (is_dir($filename)) { scandDir($filename); } else { bomtoutf8($filename); } } }
<?php $path = dirname(__FILE__);
scandDir($path);
function bomtoutf8($filename) { $ef = 239; $bb = 187; $bf = 191;
if (is_dir($filename)) return; $fd = fopen($filename, "rb"); if (!$fd) exit($filename); $headers = fread($fd, 3); fclose($fd); if (strlen($headers) < 3) return;
if (ord($headers[0]) == $ef && ord($headers[1]) == $bb && ord($headers[2]) == $bf ) { echo $filename, "\n"; $content = file_get_contents($filename); if (!$content) { exit("file get contents failed"); } $len = strlen($content); $content = substr($content, 3);
if ($content === false && $len!=3) { exit("sbustr failed"); } else if ($content === false && $len==3){ $content = ""; } $ret = file_put_contents($filename, $content, LOCK_EX); if ($ret === false) { exit("file put contents failed"); } echo "successed file ", $filename, "\n"; }
}
function scandDir($path) { $d = dir($path); if (!$d) exit("dir failed");
while (false !== ($entry = $d->read())) { if ($entry == '.' || $entry == '..') { continue; } $filename = $path . DIRECTORY_SEPARATOR . $entry; // echo $filename, "\n"; if (is_dir($filename)) { scandDir($filename); } else { bomtoutf8($filename); } } }
友情提示:代码是批量处理目录下(包括子目录)的所有带BOM文件,使用前需备份
|