ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用してすべての悪を解決する BOM_PHP チュートリアル
[php]
$path = ディレクトリ名(__FILE__);
scanDir($path);
関数 bomtoutf8($filename)
{
$ef = 239;
$bb = 187;
$bf = 191;
if (is_dir($filename)) が戻る;
$fd = fopen($filename, "rb");
if (!$fd) exit($filename);
$headers = fread($fd, 3);
fclose($fd);
if (strlen($headers)
if (ord($headers[0]) == $ef &&
ord($headers[1]) == $bb &&
ord($headers[2]) == $bf
) {
echo $ファイル名, "n";
$content = file_get_contents($filename);
if (!$content) {
exit("ファイルの内容の取得に失敗しました");
}
$len = strlen($content);
$content = substr($content, 3);
if ($content === false && $len!=3) {
exit("sbustr が失敗しました");
} else if ($content === false && $len==3){
$content = "";
}
$ret = file_put_contents($filename, $content, LOCK_EX);
if ($ret === false) {
exit("ファイルの内容の挿入に失敗しました");
}
echo "成功したファイル ", $filename, "n";
}
}
関数 scanDir($path)
{
$d = ディレクトリ($パス);
if (!$d) exit("ディレクトリが失敗しました");
while (false !== ($entry = $d->read())) {
if ($entry == '.' || $entry == '..') {
続く;
}
$ファイル名 = $パス 。 DIRECTORY_SEPARATOR 。 $エントリー;
// echo $filename, "n";
if (is_dir($filename)) {
scandir($ファイル名);
} その他 {
bomtoutf8($ファイル名);
}
}
}
$path = ディレクトリ名(__FILE__);
scandDir($path);
関数 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)
if (ord($headers[0]) == $ef &&
ord($headers[1]) == $bb &&
ord($headers[2]) == $bf
){
echo $filename, "n";
$content = file_get_contents($filename);
if (!$content) {
exit("ファイルの内容の取得に失敗しました");
}
$len = strlen($content);
$content = substr($content, 3);
if ($content === false && $len!=3) {
exit("sbustr が失敗しました");
} else if ($content === false && $len==3){
$content = "";
}
$ret = file_put_contents($filename, $content, LOCK_EX);
if ($ret === false) {
exit("ファイルの内容の挿入に失敗しました");
}
echo "成功したファイル ", $filename, "n";
}
}
関数 scandir($path)
{
$d = dir($path);
if (!$d) exit("ディレクトリ失敗");
while (false !== ($entry = $d->read())) {
if ($entry == '.' || $entry == '..') {
続けてください;
}
$filename = $path .$entry;
//エコー $ファイル名, "n";
if (is_dir($filename)) {
ScandDir($filename);
} その他 {
bomtoutf8($filename);
}
}
}
注意: コードはバッチ処理ディレクトリ (サブディレクトリを含む) 内のすべての BOM ファイルであり、使用前にバックアップする必要があります