Maison >développement back-end >Problème PHP >Comment supprimer la nomenclature avec PHP

Comment supprimer la nomenclature avec PHP

藏色散人
藏色散人original
2020-07-06 09:33:422081parcourir

Comment supprimer BOM avec PHP : Créez d'abord un fichier de code PHP ; puis définissez le répertoire du fichier ; puis définissez une méthode "checkdir" et "checkBOM" ; enfin, placez ce fichier de code dans le répertoire racine et exécutez-le ; .

Comment supprimer la nomenclature avec 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         : 
 +------------------------------------------------------------------------------------------- 
*/

Lorsque j'ai appelé l'interface, parce que j'ai utilisé la méthode d'encapsulation fournie par l'autre partie, elle n'arrêtait pas d'afficher une erreur lors de la sortie d'un ensemble de données. , je pensais que peut-être l'autre partie m'avait donné la méthode contenant des problèmes d'encodage (avec l'en-tête de nomenclature), j'ai donc cherché en ligne une méthode pour détecter la nomenclature et pouvoir la supprimer et régénérer un nouveau fichier. Après l'avoir utilisée, les données peuvent être affichées. normalement.

Qu'est-ce qu'un en-tête de nomenclature ?

BOM --Byte Order Mark,中文名译作“字节顺序标记”,在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,
现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf-8编码后执行就会出错的原因了。

Solution :

# Ce code est une méthode PHP pour supprimer les informations de nomenclature de tous les fichiers du répertoire et du sous-répertoire actuels. Placez simplement ce fichier de code dans le répertoire racine, puis dans le navigateur. Exécutez simplement et accédez à

<?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);
}

Pour de nombreuses connaissances connexes, veuillez visiter le Site Web PHP chinois  !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn