2012-08-12 258 views
0

我需要處理一個大的TXT文件,其中包含來自訂單的筆記。
一些筆記看起來像Note for an order,其他像"Note for an order"。我需要從相應的字符串中刪除" char,如果在字符串的開頭和結尾。如何從字符串中刪除第一個和最後一個字符

由於文件相當大(±10MB),最快的方法是什麼? 你會推薦我什麼?

+2

發佈樣本的wh在你的文件看起來像。如果沒有廣泛的猜測,我們是無法幫助的。 – 2012-08-12 13:12:58

回答

3

從文件中檢查每一行。我假設你正在逐行閱讀它 - 或者如果你正在閱讀它(或整個文件),你正在逐行處理它。在這種情況下,當你的行,它突然變成$var你可以做這樣的事情與trim():

$var=trim($yourLineOrColumn, '"'); 

,然後用$var處理來代替。

1

處理像你提到的將是一個密集的過程中,一個較大的文件 - 我不認爲會有很多的方式,你可以優化它。或許拆分文件分成幾個塊可以幫助...

在任何情況下,你所要做的就是迭代文件,每行使用trim()函數。下面是一個相關的帖子處理由線分割字符串打破 - How to put string in array, split by new line?

通常情況下(默認)的trim()功能將去除從字符串的開頭和結尾的空白字符,但您可以指定任何字符進行修整...

trim — Strip whitespace (or other characters) from the beginning and end of a string.

下面是一個簡單的例子來去除從字符串的開頭和結尾的雙引號字符。 - 只有兩邊的引號取出靜置包裹着引號的字stack

$str = '"Hello "Stack" Overflow"'; 
$strippedStr = trim($str,'"'); 
echo $strippedStr; 

// OUTPUT -> Hello "Stack" Overflow 

注意。

一旦刪除了每行的字符,只需使用implode()函數重新加入行。

+0

@ user984621沒問題!樂於幫助!記得在回覆用戶時使用[評論回覆](http://meta.stackexchange.com/questions/43019/how-do-comment-replies-work),以便通知他們...... – Lix 2012-08-12 15:08:57

2

你可以一次讀取一行,去掉,並保存文件。
讀一行在同一時間會少很多內存密集型比一次加載所有的文件,所以,你可以在.txt文件的任何大小,只受計算機速度的限制處理

注:我假設你正在使用Local Web Server任何共享主機可能不會讓你過騎30秒的最大執行時間限制。 。我建議在本地XAMPP服務器上使用此代碼。

<?php 
set_time_limit(0); //To remove the max-execution time limit 

$file_from = "foo.txt"; //File containing all the text 
$file_to = "bar.txt"; //New File containing all the modified text 

//open both files 
$fp_source = fopen($file_from, "r") or die("Couldn't open ".$file_from); 
$fp_dest = fopen($file_to, 'a+') or die("Couldn't open ".$file_to); 

while (!feof($fp)) {   //Continue loading domains till the end of file 
    $line = fgets($fp, 1024); //load one line at a time 
    $line = trim($line, '"'); // remove the first & last " 
    fwrite($file_to, $line); // save text in new file. 
} 
fclose($file_from);   //close the handles 
fclose($file_to);    //close the handles 
?> 

上面的代碼將替換所有出現在字符串中的第一個&最後位置,其中每個串被從另一個由一個新行字符區分。

如果「出現在字符串的中間,那麼你可以替換該行

$line = trim($line, '"'); // remove the first & last " 

有:

$line = str_replace('"', "", $line); // remove all the " 

雖然你所標記的問題爲PHP,但如果是隻有一個文件,或幾個文件,我會推薦使用搜索&替換任何桌面文本編輯器的功能,如Notepad ++等。

+0

回家。請在評論中發表任何疑問,疑惑和澄清,我明天會回答。 – DavChana 2012-08-12 14:15:15

+1

+1!優秀的職位! – Lix 2012-08-12 14:44:39

+1

謝謝你戴維德! – user984621 2012-08-12 15:01:18

相關問題