php清除BOM
2017-04-27 20:28
190 查看
近期公司官网迁移更新.
原服务器使用的是xampp+php7,现在迁移至阿里云的弹性web托管,出现各中莫名其妙的问题.
其中有个问题困扰我的时间较久.
页面上通过ajax获取后端传递过来的json,出现parseerror.原因为在文件迁移或者以前没注意,文件虽然是UTF-8的编码,但是加了BOM.
而阿里云的服务器是linux,linux是不认BOM的.
解决方法
新建一个PHP文件,粘贴以下代码,并在网页上运行一次,则自动清除BOM
<?php
if (isset($_GET['dir'])) { //设置文件目录
$basedir = $_GET['dir'];
} else {
$basedir = '.';
}
$auto = 1;
checkdir($basedir);
function checkdir($basedir)
{
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file != '.' && $file != '..') {
if (!is_dir($basedir . "/" . $file)) {
echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " <br>";
} else {
$dirname = $basedir . "/" . $file;
checkdir($dirname);
}
}
}
closedir($dh);
}
}
function checkBOM($filename)
{
global $auto;
$contents = file_get_contents($filename);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
if ($auto == 1) {
$rest = substr($contents, 3);
rewrite($filename, $rest);
return ("<font color='red'>BOM found, automatically removed.</font>");
} else {
return ("<font color='red'>BOM found.</font>");
}
} else
return ("BOM Not Found.");
}
function rewrite($filename, $data)
{
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}
?>
原服务器使用的是xampp+php7,现在迁移至阿里云的弹性web托管,出现各中莫名其妙的问题.
其中有个问题困扰我的时间较久.
页面上通过ajax获取后端传递过来的json,出现parseerror.原因为在文件迁移或者以前没注意,文件虽然是UTF-8的编码,但是加了BOM.
而阿里云的服务器是linux,linux是不认BOM的.
解决方法
新建一个PHP文件,粘贴以下代码,并在网页上运行一次,则自动清除BOM
<?php
if (isset($_GET['dir'])) { //设置文件目录
$basedir = $_GET['dir'];
} else {
$basedir = '.';
}
$auto = 1;
checkdir($basedir);
function checkdir($basedir)
{
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file != '.' && $file != '..') {
if (!is_dir($basedir . "/" . $file)) {
echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " <br>";
} else {
$dirname = $basedir . "/" . $file;
checkdir($dirname);
}
}
}
closedir($dh);
}
}
function checkBOM($filename)
{
global $auto;
$contents = file_get_contents($filename);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
if ($auto == 1) {
$rest = substr($contents, 3);
rewrite($filename, $rest);
return ("<font color='red'>BOM found, automatically removed.</font>");
} else {
return ("<font color='red'>BOM found.</font>");
}
} else
return ("BOM Not Found.");
}
function rewrite($filename, $data)
{
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}
?>
相关文章推荐
- PHP检测并清除文件开头的BOM
- 使用php清除bom示例
- php 清除文件的Bom
- 清除文件夹下bom代码——php
- PHP批量删除、清除UTF-8文件BOM头的代码实例
- php清除bom
- 使用php清除bom示例
- 批量清除和检测bom的php代码
- 清除php BOM头
- 批量清除BOM(PHP文件头的空白行)
- PHP批量删除、清除UTF-8文件BOM头的代码实例
- 清除UTF-8文件的BOM头
- PHP 清除HTML代码、空格、回车换行符的函数
- 遍历当前文件夹下的所有PHP文件并去除UTF-8 BOM
- 用php把utf8的中的BOM去掉
- php清除不明输出
- php清除所有缓存与根据ID清楚缓存例子
- php UTF-8、Unicode和BOM问题
- PHP中utf-8编码格式之BOM引发的问题
- php 清除缓存的方法