我需要处理一个大的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