2012-08-12 186 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

相关问题