首頁 >後端開發 >PHP問題 >php ufeff怎麼去掉

php ufeff怎麼去掉

藏色散人
藏色散人原創
2021-10-14 09:50:172680瀏覽

php去掉ufeff的方法:1、將PHP檔案儲存為無dom格式;2、透過「function checkBOM($filename){...}」方法檢查並去掉ufeff即可。

php ufeff怎麼去掉

本文操作環境:windows7系統、PHP7.1版、DELL G3電腦

php ufeff怎麼去掉?

php 移除檔案的BOM\ufeff

今天遇到一個問題,請求介面回傳的資料不符合格式,用瀏覽器列印出來又看不出什麼問題,最後發現是資料頭部有\UFEFF(BOM頭),搜尋下,是檔案編碼格式為​​UTF8-BOM引起的,開發時編輯器保存格式有誤,解決辦法有兩種:

1、檔案量少,可以用notopad 儲存為無dom格式(格式->轉為UTF-8 無dom格式)

2、檔案很多時,用下列程式碼,運行後可以對指定目錄(不傳參則為目前目錄)下所有文件進行修復

<?php
header(&#39;content-Type: text/html; charset=utf-8&#39;);
if(isset($_GET[&#39;dir&#39;])){ //设置文件目录,如果没有设置,则自动设置为当前文件所在目录
    $basedir=$_GET[&#39;dir&#39;];
}else{
    $basedir=&#39;.&#39;;
}
$auto=1;/*设置为1标示检测BOM并去除,设置为0标示只进行BOM检测,不去除*/
echo &#39;当前查找的目录为:&#39;.$basedir.&#39;当前的设置是:&#39;;
echo $auto?&#39;检测文件BOM同时去除检测到BOM文件的BOM<br />&#39;:&#39;只检测文件BOM不执行去除BOM操作<br />&#39;;
checkdir($basedir);
function checkdir($basedir){
    if($dh=opendir($basedir)){
        while (($file=readdir($dh)) !== false){
            if($file != &#39;.&#39; && $file != &#39;..&#39;){
                if(!is_dir($basedir.&#39;/&#39;.$file)){
                    echo &#39;文件: &#39;.$basedir.&#39;/&#39;.$file .checkBOM($basedir.&#39;/&#39;.$file).&#39; <br>&#39;;
                }else{
                    $dirname=$basedir.&#39;/&#39;.$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 (&#39; <font color=red>找到BOM并已自动去除</font>&#39;);
        }else{
            return (&#39; <font color=red>找到BOM</font>&#39;);
        }
    }else{
        return (&#39; 没有找到BOM&#39;);
    }
}
function rewrite($filename,$data){
    $filenum=fopen($filename,&#39;w&#39;);
    flock($filenum,LOCK_EX);
    fwrite($filenum,$data);
    fclose($filenum);
}
?>

 推薦學習:《PHP影片教學

以上是php ufeff怎麼去掉的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多