Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk membuang php bom
Cara untuk membuang php bom: 1. Cari direktori akar PHP 2. Letakkan "function checkBOM($filename){...}" dan kod lain dalam direktori root, dan jalankannya melalui pelayar untuk mengaksesnya.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.4, komputer Dell G3.
Bagaimana untuk membuang php bom?
Kaedah mudah untuk mengalih keluar BOM dalam 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 : +------------------------------------------------------------------------------------------- */
Apabila saya memanggil antara muka, kerana saya menggunakan kaedah enkapsulasi yang disediakan oleh pihak lain, ralat terus ditunjukkan semasa mengeluarkan satu set data. Akhirnya, saya berpendapat bahawa kaedah yang diberikan oleh pihak lain mungkin mengandungi isu pengekodan (dengan pengepala BOM), jadi saya mencari kaedah dalam talian untuk mengesan BOM dan mengeluarkannya dan menjana semula fail baharu. data boleh dipaparkan seperti biasa.
Apakah itu pengepala BOM?
BOM --Byte Order Mark, nama Cina diterjemahkan sebagai "tanda pesanan bait". Dalam fail yang dikodkan utf-8, BOM berada dalam pengepala fail dan menduduki tiga bait untuk tandai fail. Ia tergolong dalam pengekodan UTF-8
Terdapat banyak perisian yang boleh mengecam pengepala BOM, tetapi sesetengahnya tidak dapat mengecam pengepala BOM Pengekodan UTF-8 dengan Notepad Sebab mengapa berlaku masalah.
Penyelesaian:
# 这里代码为PHP方式去除当前目录及字目录所有文件BOM信息,只要将此代码文件放到根目录下,然后浏览器运行访问就可以了 <?php if (isset($_GET['dir'])) { //设置文件目录 $basedir = $_GET['dir']; } else { $basedir = '.'; } $auto = 1; checkdir($basedir); function checkdir($basedir) { if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..') { 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='red'>BOM found, automatically removed.</font>"); } else { return ("<font color='red'>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); }
Cadangan kajian: "Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk membuang php bom. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!