复制文件内容到另一个文件
我的文件中包含该内容(的1.txt):复制文件内容到另一个文件
- user.php的ID = XXXXXX
- user.php的ID = XXXXXX
- user.php的? ID = XXXXXX
- user.php的?ID = XXXXXX
- user.php的?ID = XXXXXX
- 文/数字
- user.php的?ID = XXXXXX
- user.php的?ID = XXXXXX
- 等等...
(XXXXXX =数字)
有可能只采取user.php的?ID = XXXXXX,并将它们复制到另一个文件,而不处理不必要的文本,因为文件包含大约50 000行?
<?php
//Get all the matches from the file
$fileContents = file_get_contents('1.txt');
preg_match_all('/user.php\?id=[0-9]{6}/', $fileContents, $matches);
//Output to new file
$fh = fopen('output.txt', 'w+');
foreach ($matches['0'] as $match) {
fputs($fh, $match."\r\n");
}
fclose($fh);
?>
顺便说一句,应该是:$比赛[0] – ZeroSuf3r 2012-03-10 11:56:49
<?php
$file = fopen('source.txt', 'rb');
$newfile = fopen('target.txt', 'wb');
while(($line = fgets($file)) !== false) {
if(strpos($line, 'user.php') !== false) {
fputs($newfile, $line);
}
}
fclose($newfile);
fclose($file);
?>
此代码尚未经过测试,但我认为这将正常工作。
这将工作,但由于输入文件很大,它不是非常有效的内存。逐行读写由'fopen'创建的流将更好。 – 2012-03-10 10:42:43
我修改了它,你能帮我查看这段代码吗?我不确定它是否包含语法错误,因为我用我的诺基亚E63键入了它。 – 2012-03-10 10:54:33
现在它工作的很好,正是我的意思。一个建议:加'B'标志开口模式(第二'fopen'参数),手动有对此问题的说明:'对于便携性,强烈建议用打开文件时总是使用“b”标记fopen()。请参阅['fopen'文档](http://php.net/manual/en/function.fopen.php)了解此建议背后的原因。 – 2012-03-10 11:02:06
<?php
error_reporting(0);
$fs=fopen("1.txt", "r");
$ft=fopen("2.txt", "w");
if ($fs==NULL)
{
echo "Can't Open Source File ...";
exit(0);
}
if ($ft==NULL)
{
echo "Can't Open Destination File ...";
fclose ($fs);
exit(1);
}
else
{
while ($ch=fgets($fs))
fputs($ft, $ch);
fclose ($fs);
fclose ($ft);
}
//echo "File Handling successfully ...";
?>
简单地张贴代码片段不能充分回答这个问题。考虑添加关于您的代码如何解决问题的解释。 – adamdunson 2013-12-09 14:30:07
似乎是一个非常简单的问题。你尝试了什么? – 2012-03-10 10:34:25
是的,这是可能的。请提供一些你的代码。 – Alp 2012-03-10 10:36:05