2017年9月17日 星期日

寫程式沒注意到的BOM檔首

當檔案被以包含 BOM 儲存時,有一個萬國字元插入到檔案的起點,而大多數的文字編輯器將不會顯示,所以您看不見它。php 不能解析檔案中的 BOM 字元,而把它看成是一般字元。
  用微軟的記事本軟體存檔的時候,就會有一個 BOM 加進去,平常也沒注意。


當我用 $fr = @fopen('file.txt', 'r');
讀進一個文字檔

xxx 字串一 
xxx 字串二 

然後寫了以下的程式

while(fscanf($fr,"%s%s",$str1,$str2)){   if($str1=="xxx")
{echo "yaya<BR>";}   echo $str1."+".str2."<BR>" ; 

希望如果讀到"xxx"就會印出 yaya
程式執行的結果如下: 

xxx+字串一 
yaya 
xxx+字串二 

結果,卻是第一行的時候,對那個 if 沒有反應, 讀第二行資料的時候才有判斷是否讀到。
其實不是沒反應,而且xxx前面多了看不見的檔首BOM,程式當然就不認為符合“xxx”囉!

沒有留言:

張貼留言