Re: [請益] header與output_buffering
※ 引述《kylekai (一秒鐘等於永遠..)》之銘言:
: ※ 引述《usnoraa (無)》之銘言:
: 簡單的來說就是你的在 header 之前有輸出過其他的東西..
: 甚至是你的檔案沒有存成 no bom 的格式..
: 導致 bom 比你的程式還要早輸出...
: 所以才會需要用 output_buffer 來緩存...
: 藉此讓 header 有效果...
: 解決方發. 檢查程式碼, 檢查存檔格式..
: 網路上應該可以找到一些 script 可以自動檢查目錄的檔案有沒有 bom .
我有使用過的
<?php
//此文件用於快速測試UTF8編碼的文件是不是加了BOM,並可自動移除
//By Bob Shen
$basedir="."; //修改此行為需要檢測的目錄,點表示當前目錄
$auto=1; //是否自動移除發現的BOM信息。1為是,0為否。
//以下不用改动
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename:
$file ".checkBOM("$basedir/$file")." <br>";
}
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 (" ar.");
} else {
return (" f.");
}
}
else return (" .");
}
function rewrite ($filename, $data) {
$filenum=fopen($filename,"w");
flock($filenum,LOCK_EX);
fwrite($filenum,$data);
fclose($filenum);
}
?>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.231.131.217
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章
7
15