php method to remove BOM headers in batches: [
The operating environment of this article: windows10 system, PHP7, thinkpad t480 computer.
We are in the actual development process BOM headers are often encountered in the program. The existence of these BOM headers often causes the program to fail to run normally, like the following:
So how should we solve this problem? What’s the problem? In fact, it’s not difficult. Let’s take a look at the implementation code:
去除BOM头解决方法: <?php ini_set('memory_limit','1024M'); 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) { // BOM 的前三个字符的ASCII 码分别为 239 187 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 ); } $auto=1; $dir='D:/web/';//项目文件路径 checkDir($dir); ?>
Recommended learning: php training
The above is the detailed content of How to remove bom headers in batches in php. For more information, please follow other related articles on the PHP Chinese website!