Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membuang bom dalam php

Bagaimana untuk membuang bom dalam php

PHPz
PHPzasal
2023-04-19 09:17:08592semak imbas

Dalam proses menulis kod sumber PHP, selalunya terdapat situasi di mana ia perlu dijalankan pada pelayan. Walau bagaimanapun, dalam proses menulis kod sumber PHP, beberapa isu perit sering timbul, seperti format BOM.

Nama penuh BOM ialah Byte Order Mark, iaitu tanda pesanan bait. Ia digunakan untuk mewakili kaedah pengekodan fail teks Unicode. Dalam pengekodan UTF-8, BOM ialah jujukan bait tiga bait, iaitu "EF BB BF". Apabila jujukan bait ini ditambahkan pada permulaan fail teks yang dikodkan UTF-8, ini menunjukkan bahawa fail teks dikodkan UTF-8 supaya program yang membaca fail boleh menghuraikan kandungan fail dengan betul. Walau bagaimanapun, jika anda ingin menggunakan BOM dalam kod sumber PHP, ia bukanlah idea yang baik. Contohnya, apabila BOM disertakan dalam skrip PHP, ia mungkin menyebabkan penyemak imbas mengeluarkan "kosong utama" atau "maklumat pengepala PHP telah dihantar."

Jadi, bagaimana untuk mengalih keluar BOM dalam kod sumber PHP?

Pertama, kita perlu menentukan sama ada terdapat BOM dalam kod sumber PHP. Anda boleh menggunakan kod berikut untuk menentukan:

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

Kod ini membuka fail dan membaca tiga aksara pertama. Jika ketiga-tiga aksara ini ialah "EF BB BF", ini menunjukkan bahawa fail tersebut mempunyai BOM.

Seterusnya, kita perlu mengeluarkan BOM. Ini boleh dialih keluar menggunakan kod berikut:

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

Kod ini membaca keseluruhan fail ke dalam rentetan dan kemudian menggunakan ungkapan biasa (^$BOM) untuk memadankan dan menggantikan BOM. Akhirnya, kandungan baharu ditulis semula ke fail.

Jika anda ingin membuang BOM secara berkumpulan daripada semua kod sumber PHP, anda boleh menggunakan kod berikut:

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

Kod ini akan melintasi semua fail secara rekursif dalam direktori yang ditentukan dan menentukan Sama ada ia ialah kod sumber PHP dan sama ada terdapat BOM. Jika BOM hadir, keluarkannya.

Secara umumnya, kehadiran BOM dalam PHP boleh menyebabkan beberapa masalah, oleh itu, adalah idea yang baik untuk mengalih keluar BOM dalam PHP. Saya harap kod di atas dapat membantu anda mengalih keluar BOM daripada kod sumber PHP dengan mudah.

Atas ialah kandungan terperinci Bagaimana untuk membuang bom dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn