首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP File_Get_Contents()

PHP File_Get_Contents()
EN

Stack Overflow用户
提问于 2017-04-18 17:21:26
回答 2查看 182关注 0票数 1

我有一个非常长的文本文件(300000个字符),其中的数据由逗号分隔。

aaa、bbb、ccc、ddd、eee、ffff、gg、hhhhh、ii、j、kkkkkkkkkkkkk、l、mm

我希望将数据填充到一个字符串中,但要按部分填充。例如,前100条数据,然后是下一条。请注意,每段数据的长度都会发生不可预测的变化。

有没有一种快速的方法可以做到这一点?我希望将数据分成部分填充到字符串中,因为我不想一次使用太多内存。所以有点像一个循环:

代码语言:javascript
复制
for ($counter = 0; $counter < $somenumber; $counter++) {
// (1) extract counter-th 100 pieces of data to string
// (2) explode string with , as delimiter so I can obtain an array
// (3) do something to this array
}

我可以使用file_get_contents吗?或者我可以使用什么?

EN

回答 2

Stack Overflow用户

发布于 2017-04-18 17:27:47

可以,您可以使用file_get_contents。在此之后,您可以使用explode http://php.net/manual/de/function.explode.php将文件分解为几个部分。

在您的示例中,请使用:

代码语言:javascript
复制
$result = explode(",", $your_file_content);

你会得到一个数组,在$result[0]中会有第一部分,直到你的第一个逗号,在$result[1]中会有第二个部分,依此类推。意思是如果你有像这样的东西:

aaa、bbb、ccc、ddd、eee

然后,您将拥有:

代码语言:javascript
复制
$result[0] // aaa
$result[1] // bbb
$result[2] // ccc
$result[3] // ddd
$result[4] // eee

在此之后,您可以使用简单的外观将一起添加到一个字符串中。例如,如下所示:

代码语言:javascript
复制
for($a = 0; $a < 101; $a++) {
   $string .= $result[$a];
}

这肯定不会以这种方式工作,因为您的$result数组将有100多个条目,但是使用第一个for-loop之外的第二个条目,您应该可以非常快地实现您正在尝试的结果。

票数 0
EN

Stack Overflow用户

发布于 2017-04-18 17:35:37

您可以使用fread读取批量文件,例如8192Byte。

代码语言:javascript
复制
<?php
  $handle = fopen("filepath", "r");
  $content = '';
  $flag = false;
  while (!feof($handle)) {
    $content .= fread($handle, 8192);
    if(substr($content, -1) == ',')
      $flag = true;
    $array = explode(',', $content);
    if($flag)
    {
      $content = '';
    }
    else
    {
      $content = end($array);
      $array = array_pop($array);
    }
  }
  $array[] = $content;
  fclose($handle);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43468292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档