Heim  >  Artikel  >  Backend-Entwicklung  >  So entfernen Sie bom aus PHP-Code

So entfernen Sie bom aus PHP-Code

藏色散人
藏色散人Original
2022-10-20 09:29:331842Durchsuche

So entfernen Sie BOM im PHP-Code: 1. Verwenden Sie die Methode „function clearbom($contents){...}“, um den BOM-Header im Text zu entfernen. 2. Verwenden Sie die Methode „function checkBOM ($filename) {. ..}“-Methode Erkennen und entfernen Sie den BOM-Header; 3. Verwenden Sie die „function SearchBOM($string) {...}“-Methode, um zu suchen, ob die aktuelle Datei über eine BOM verfügt, und entfernen Sie diese.

So entfernen Sie bom aus PHP-Code

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 8.1, Dell G3-Computer.

Wie entferne ich Stücklisten aus PHP-Code?

PHP-Batch entfernt Stücklisten-Header aus Dateien im UTF8-Format.

Ich verwende oft einen TXT-Texteditor, um PHP-Dateien zu schreiben, daher füge ich oft automatisch Stücklisten-Header hinzu, was in vielen Fällen zu Problemen führt, z. B. wenn unsere Sitzung nicht funktioniert und Cookies nicht funktionieren eingestellt werden und andere Probleme.

Nachfolgend habe ich mehrere Methoden zusammengestellt, um mit PHP-Programmen Stücklistenköpfe in Dateien im UTF8-Format zu löschen.

Beispiel 1

Der Code lautet wie folgt:

/**
* 去掉文件中的 bom头
* @var 0.1
* @author Chenwp
*/
function clearbom($contents){
//UTF8 去掉文本中的 bom头
$BOM = chr(239).chr(187).chr(191);
return str_replace($BOM,”,$contents);
}



/**
* 去掉文件中的bom头
* @param object $fileName Description
* @return object    Description
*/
function clearfilebom($fileName){
$c = file_get_contents($fileName);
$c = clearbom($c);
file_put_contents($fileName,$c);
}

Beispiel 2

Wie konvertiert man das Format mit der BOM-Datei in eine unsignierte Datei im UTF-8-Format? Lassen Sie mich einen Teil des PHP-Codes mit Ihnen teilen:

Der Code lautet wie folgt

<?php
//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除

$basedir=”.”; //修改此行为需要检测的目录,点表示当前目录
$auto=1; //是否自动移除发现的BOM信息。1为是,0为否。

//以下不用改动

if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!=’.’ && $file!=’..’ && !is_dir($basedir.”/”.$file)) echo “filename: $file “.checkBOM(“$basedir/$file”).” <br>”;
}
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);
}
//结束
?>

Beispiel 3

scannt automatisch alle Unterverzeichnisse und Dateien

Der Code lautet wie folgt

<?php
// 设定你要清除BOM的根目录(会自动扫描所有子目录和文件)
$HOME = dirname(__FILE__);
// 如果是Windows系统,修改为:$WIN = 1;
$WIN = 0;
?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>UTF8 BOM 清除器</title>
<style>
body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; }
.FOUND { color: #F30; font-size: 14px; font-weight: bold; }
</style>
</head>
<body>
<?php
$BOMBED = array();
RecursiveFolder($HOME);
echo ‘<h2>These files had UTF8 BOM, but i cleaned them:</h2><p>’;
foreach ($BOMBED as $utf) { echo $utf .”<br />n”; }
echo ‘</p>’;
// 递归扫描
function RecursiveFolder($sHOME) {
global $BOMBED, $WIN;
$win32 = ($WIN == 1) ? “\” : “/”;
$folder = dir($sHOME);
$foundfolders = array();
while ($file = $folder->read()) {
if($file != “.” and $file != “..”) {
if(filetype($sHOME . $win32 . $file) == “dir”){
$foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;
} else {
$content = file_get_contents($sHOME . $win32 . $file);
$BOM = SearchBOM($content);
if ($BOM) {
$BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;
// 移出BOM信息
$content = substr($content,3);
// 写回到原始文件
file_put_contents($sHOME . $win32 . $file, $content);
}
}
}
}
$folder->close();
if(count($foundfolders) > 0) {
foreach ($foundfolders as $folder) {
RecursiveFolder($folder, $win32);
}
}
}
// 搜索当前文件是否有BOM
function SearchBOM($string) {
if(substr($string,0,3) == pack(“CCC”,0xef,0xbb,0xbf)) return true;
return false;
}
?>
</body>
</html>

Empfohlenes Lernen: „PHP-Video-Tutorial "

Das obige ist der detaillierte Inhalt vonSo entfernen Sie bom aus PHP-Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn