Heim > Backend-Entwicklung > PHP-Problem > So entfernen Sie BOM mit PHP

So entfernen Sie BOM mit PHP

藏色散人
Freigeben: 2023-03-01 22:40:01
Original
2083 Leute haben es durchsucht

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 .

So entfernen Sie BOM mit PHP

/* 
 +------------------------------------------------------------------------------------------- 
 + 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         : 
 +------------------------------------------------------------------------------------------- 
*/
Nach dem Login kopieren

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编码后执行就会出错的原因了。
Nach dem Login kopieren

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[&#39;dir&#39;])) { //设置文件目录 
  $basedir = $_GET[&#39;dir&#39;];
} else {
  $basedir = &#39;.&#39;;
}
 
$auto = 1;
checkdir($basedir);
 
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) {
    if ($auto == 1) {
      $rest = substr($contents, 3);
      rewrite($filename, $rest);
      return ("<font color=&#39;red&#39;>BOM found, automatically removed.</font>");
    } else {
      return ("<font color=&#39;red&#39;>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);
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage