Home  >  Article  >  Backend Development  >  How to remove bom headers in batches in php

How to remove bom headers in batches in php

王林
王林Original
2021-09-17 15:03:211928browse

php method to remove BOM headers in batches: [

How to remove bom headers in batches in php

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:

How to remove bom headers in batches in php

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(&#39;memory_limit&#39;,&#39;1024M&#39;); 
function checkdir($basedir) {    
    if ($dh = opendir ( $basedir )) {    
        while ( ($file = readdir ( $dh )) !== false ) {    
            if ($file != &#39;.&#39; && $file != &#39;..&#39;) {    
                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=&#39;D:/web/&#39;;//项目文件路径
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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn