Heim  >  Artikel  >  Backend-Entwicklung  >  So entfernen Sie BOM in PHP

So entfernen Sie BOM in PHP

PHPz
PHPzOriginal
2023-04-19 09:17:08591Durchsuche

Beim Schreiben von PHP-Quellcode kommt es häufig vor, dass dieser auf dem Server ausgeführt werden muss. Beim Schreiben von PHP-Quellcode treten jedoch häufig heikle Probleme auf, beispielsweise das Stücklistenformat.

Der vollständige Name von BOM lautet Byte Order Mark, also die Byte-Reihenfolge-Marke. Es wird verwendet, um die Kodierungsmethode einer Unicode-Textdatei darzustellen. Bei der UTF-8-Codierung ist BOM eine Drei-Byte-Bytesequenz, die „EF BB BF“ lautet. Wenn diese Bytesequenz am Anfang einer UTF-8-codierten Textdatei hinzugefügt wird, zeigt dies an, dass die Textdatei UTF-8-codiert ist, sodass Programme, die die Datei lesen, den Dateiinhalt korrekt analysieren können. Wenn Sie BOM jedoch im PHP-Quellcode verwenden möchten, ist dies keine gute Idee. Wenn beispielsweise eine Stückliste in ein PHP-Skript eingefügt wird, kann dies dazu führen, dass der Browser „führende Leerzeichen“ oder „PHP-Header-Informationen wurden gesendet“ ausgibt.

Also, wie entferne ich BOM im PHP-Quellcode?

Zunächst müssen wir feststellen, ob im PHP-Quellcode eine Stückliste vorhanden ist. Sie können den folgenden Code verwenden, um dies zu erkennen:

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

Dieser Code öffnet die Datei und liest die ersten drei Zeichen. Wenn diese drei Zeichen „EF BB BF“ lauten, bedeutet dies, dass die Datei über eine Stückliste verfügt.

Als nächstes müssen wir die Stückliste entfernen. Dies kann mit dem folgenden Code entfernt werden:

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

Dieser Code liest die gesamte Datei in einen String und verwendet dann einen regulären Ausdruck (^$BOM), um die Stückliste abzugleichen und zu ersetzen. Abschließend wird der neue Inhalt in die Datei zurückgeschrieben.

Wenn Sie Stücklisten stapelweise aus allen PHP-Quellcodes entfernen möchten, können Sie den folgenden Code verwenden:

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

Dieser Code durchläuft alle Dateien im angegebenen Verzeichnis rekursiv und ermittelt, ob es sich um PHP-Quellcodes handelt und ob eine Stückliste vorhanden ist . Wenn die Stückliste vorhanden ist, entfernen Sie sie.

Im Allgemeinen kann das Vorhandensein von BOM in PHP einige Probleme verursachen, daher ist es eine gute Idee, BOM in PHP zu entfernen. Ich hoffe, dass der obige Code Ihnen dabei helfen kann, BOM einfach aus dem PHP-Quellcode zu entfernen.

Das obige ist der detaillierte Inhalt vonSo entfernen Sie BOM in PHP. 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