Maison  >  Article  >  développement back-end  >  Comment supprimer bom en php

Comment supprimer bom en php

PHPz
PHPzoriginal
2023-04-19 09:17:08592parcourir

Lors du processus d'écriture du code source PHP, il arrive souvent que celui-ci doive être exécuté sur le serveur. Cependant, lors du processus d’écriture du code source PHP, certains problèmes épineux surviennent souvent, comme le format BOM.

Le nom complet de BOM est Byte Order Mark, qui est la marque d'ordre des octets. Il est utilisé pour représenter la méthode de codage d'un fichier texte Unicode. Dans le codage UTF-8, BOM est une séquence d'octets de trois octets, qui sont "EF BB BF". Lorsque cette séquence d'octets est ajoutée au début d'un fichier texte codé en UTF-8, cela indique que le fichier texte est codé en UTF-8 afin que les programmes qui lisent le fichier puissent analyser correctement le contenu du fichier. Cependant, si vous souhaitez utiliser BOM dans le code source PHP, ce n'est pas une bonne idée. Par exemple, lorsqu'une nomenclature est incluse dans un script PHP, le navigateur peut afficher des « espaces vides » ou « des informations d'en-tête PHP ont été envoyées ».

Alors, comment supprimer la BOM dans le code source PHP ?

Tout d'abord, nous devons déterminer s'il existe une nomenclature dans le code source PHP. Vous pouvez utiliser le code suivant pour le dire :

function hasBOM($filename) {
    $fp = fopen($filename, 'r');
    $theBOM = fread($fp, 3);
    fclose($fp);
    return ($theBOM === pack('CCC', 0xef, 0xbb, 0xbf));
}

Ce code ouvre le fichier et lit les trois premiers caractères. Si ces trois caractères sont "EF BB BF", cela indique que le fichier possède une BOM.

Ensuite, nous devons supprimer la nomenclature. Cela peut être supprimé à l'aide du code suivant :

function removeBOM($filename) {
    $content = file_get_contents($filename);
    $BOM = pack('H*','EFBBBF');
    $content = preg_replace("/^$BOM/", '', $content);
    file_put_contents($filename, $content);
}

Ce code lit l'intégralité du fichier dans une chaîne, puis utilise une expression régulière (^$BOM) pour faire correspondre et remplacer la nomenclature. Enfin, le nouveau contenu est réécrit dans le fichier.

Si vous souhaitez supprimer par lots la BOM de tous les codes sources PHP, vous pouvez utiliser le code suivant :

function batchRemoveBOM($directory) {
    $dir = opendir($directory);
    if (!$dir) {
        return;
    }
    while ($file = readdir($dir)) {
        if ($file == '.' || $file == '..') {
            continue;
        }
        $path = $directory . '/' . $file;
        if (is_dir($path)) {
            batchRemoveBOM($path);
        } else {
            if (preg_match('/\.php$/', $file) && hasBOM($path)) {
                removeBOM($path);
            }
        }
    }
    closedir($dir);
}

Ce code parcourra de manière récursive tous les fichiers du répertoire spécifié et déterminera s'il s'agit de codes sources PHP et s'il existe une nomenclature. . Si la nomenclature est présente, supprimez-la.

En général, la présence de BOM en PHP peut causer certains problèmes, c'est donc une bonne idée de supprimer BOM en PHP. J'espère que le code ci-dessus pourra vous aider à supprimer facilement la nomenclature du code source PHP.

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