我需要處理一個大的TXT文件,其中包含來自訂單的筆記。
一些筆記看起來像Note for an order
,其他像"Note for an order"
。我需要從相應的字符串中刪除"
char,如果在字符串的開頭和結尾。如何從字符串中刪除第一個和最後一個字符
由於文件相當大(±10MB),最快的方法是什麼? 你會推薦我什麼?
我需要處理一個大的TXT文件,其中包含來自訂單的筆記。
一些筆記看起來像Note for an order
,其他像"Note for an order"
。我需要從相應的字符串中刪除"
char,如果在字符串的開頭和結尾。如何從字符串中刪除第一個和最後一個字符
由於文件相當大(±10MB),最快的方法是什麼? 你會推薦我什麼?
從文件中檢查每一行。我假設你正在逐行閱讀它 - 或者如果你正在閱讀它(或整個文件),你正在逐行處理它。在這種情況下,當你的行,它突然變成$var
你可以做這樣的事情與trim():
$var=trim($yourLineOrColumn, '"');
,然後用$var
處理來代替。
處理像你提到的將是一個密集的過程中,一個較大的文件 - 我不認爲會有很多的方式,你可以優化它。或許拆分文件分成幾個塊可以幫助...
在任何情況下,你所要做的就是迭代文件,每行使用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()
函數重新加入行。
@ user984621沒問題!樂於幫助!記得在回覆用戶時使用[評論回覆](http://meta.stackexchange.com/questions/43019/how-do-comment-replies-work),以便通知他們...... – Lix 2012-08-12 15:08:57
你可以一次讀取一行,去掉「,並保存文件。
讀一行在同一時間會少很多內存密集型比一次加載所有的文件,所以,你可以在.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 ++等。
回家。請在評論中發表任何疑問,疑惑和澄清,我明天會回答。 – DavChana 2012-08-12 14:15:15
+1!優秀的職位! – Lix 2012-08-12 14:44:39
謝謝你戴維德! – user984621 2012-08-12 15:01:18
發佈樣本的wh在你的文件看起來像。如果沒有廣泛的猜測,我們是無法幫助的。 – 2012-08-12 13:12:58