我讀從一個文件中的一些行的格式如下:面臨PHP一個奇怪的情況在解析文件
Identifier String Number String Number String Number String Number
Identifier String Number String Number String Number
Identifier String Number String Number
Identifier String Number String Number String Number String Number String Number
在這是給我的文件,我相信線是非常非常長如此以下代碼:
<?php
$fp = gzopen($filename, "r");
while($source = gzgets($fp, 4096)) {
$trans = array("\x0D" => "");
$source = strtr($source,$trans);
$source = trim($source);
$source = explode(' ', $source);
foreach($source as $value) {
$value = trim($value);
//Clean and insert into appropriate column
}
}
?>
正在生成解析錯誤,即我沒有得到預期的列。當我期待一個字符串時,它給了我一個數字,當我想要一個數字時,它會返回一個標識符。經過幾個小時的調試後,現在我發現4096的緩衝區大小無法讀取真正的長行,因此它只讀取部分行,然後在下一次迭代中讀取下一個塊,因爲內部for循環是被搞砸了。我試着給一個大的緩衝區值:
while($source = gzgets($fp, 409600)) {
但我的解析仍然搞砸了一些其他奇怪的情況。我該如何照顧這件事?有什麼建議麼?
字符串列中是否可以包含空格?如果是這樣,他們是如何引用的? – Lee 2010-09-13 03:50:34
@李:他們不能包含空格。剛剛解決了這個問題。原來,我正在實施我的分析器不正確。 – Legend 2010-09-13 04:01:28