Heim >Backend-Entwicklung >PHP-Problem >So entfernen Sie BOM mit PHP
So entfernen Sie BOM mit PHP: Erstellen Sie zuerst eine PHP-Codedatei, legen Sie dann das Dateiverzeichnis fest und legen Sie diese Codedatei schließlich im Stammverzeichnis ab .
/* +------------------------------------------------------------------------------------------- + Title : 去掉BOM头方法 + Author : hello_sgw + Version : V1.0.0.1 + Initial-Time : 2017-08-12 15:18 + Last-time : 2017-08-12 16:01 + Desc : +------------------------------------------------------------------------------------------- */
Als ich die Schnittstelle aufrief, wurde bei der Ausgabe eines Datensatzes immer wieder ein Fehler angezeigt, weil ich die von der anderen Partei bereitgestellte Kapselungsmethode verwendet hatte Ich dachte, dass die andere Partei mir möglicherweise Probleme mit der Codierung (mit BOM-Header) gegeben hatte, also habe ich online nach einer Methode gesucht, um BOM zu erkennen und diese zu entfernen und eine neue Datei zu generieren normal angezeigt.
Was ist ein Stücklistenkopf?
BOM --Byte Order Mark,中文名译作“字节顺序标记”,在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码, 现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf-8编码后执行就会出错的原因了。
Lösung:
# Dieser Code ist eine PHP-Methode zum Entfernen der Stücklisteninformationen aller Dateien im aktuellen Verzeichnis und Unterverzeichnis. Legen Sie diese Codedatei einfach im Stammverzeichnis ab. und dann den Browser. Führen Sie einfach
<?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); }
aus und greifen Sie darauf zu. Weitere Informationen zu diesem Thema finden Sie auf der chinesischen PHP-Website!
Das obige ist der detaillierte Inhalt vonSo entfernen Sie BOM mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!