作者tyc5116 (累人啊....)
看板PHP
標題[請益] strpos會抓錯位置?
時間Thu Mar 1 23:36:55 2012
今天在試的時候遇到的問題,所以我又寫了一個範例來測試,如下
$test[0]="1234567,abcde";
$test[1]="1234567890,aaaaa";
$test[2]="12345,aabbcc";
for($i=0;$i<3;$i++){
$str=$test[$i];
print $str."<br>";
$pos=strpos($test[$i],",");
print $pos."<br>";
}
跑出來的結果
1234567,abcde
10
1234567890,aaaaa
10
12345,aabbcc
5
第一個答案是錯的,當有一大筆資料時,第一筆都會錯,但後面的都會對
請問是為什麼呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.128.68
1F:→ thitbbeb:我直接copy你的這片段程式碼,三個結果都是對的耶@@ 03/01 23:56
2F:→ tyc5116:@@剛試了一下,什麼都沒改,結果又對了@@ 03/02 00:09
3F:→ tyc5116:反正從csv讀進來的資料,一樣,第一筆結果會是錯的 03/02 00:09
4F:→ tyc5116:如果csv的資料第一行空白,結果都是對的,好奇怪 03/02 00:10
5F:推 chrisQQ:第一筆前面可能有BOM,你用 hex editor 打開來看就知道了 03/02 00:32
6F:→ chrisQQ:或是有其他神秘的 header 在那 03/02 00:33
7F:→ tyc5116:看了一下,真的有沒錯,可是我該怎麼避免掉這個情況 03/02 07:55
8F:→ tyc5116:主要是php,mysql,excel間的處理excel的資料要寫入mysql 03/02 07:56
9F:→ tyc5116:先不考慮板上說的phpexcel好了,因為我的表格並不複雜XD 03/02 07:57
10F:→ tyf99:第一行空下來? 03/02 08:07
11F:→ mervynW:trim試試看 03/02 10:18
12F:推 chrisQQ:如果不能 trim 掉,那就直接把檔案開頭略過 3bytes 在處理 03/02 16:31
13F:→ chrisQQ:就好,看起來是固定的。 03/02 16:31