2012-07-28 104 views
0

我有一个文本文件,它看起来像:如何将文本文件转换为基于php数组的新文本文件?

Line one 
Line two 
Line three 

我想将其转换为:

return array(
    'Line one', 
    'Line two', 
    'Line three' 
); 

,并将其保存为一个新文件。我不想一遍又一遍地执行相同的爆炸/预分页,这实际上没有意义。我只想从原始文件创建一个静态文件,并在更新原始文件时进行更新。

我该怎么做呢?

+0

解释为什么它没有意义的使用使preg_split或类似的功能?看到你的问题,这似乎是处理这个问题的最简单方法。 – Wouter 2012-07-28 21:16:15

+0

对不起,如果我不清楚,我的意思是每次需要脚本时执行它是没有意义的,当我可以进行一次更改而不浪费每次调用的处理时间时。 – xtraorange 2012-07-28 21:26:08

+1

您可以对两个文件执行一次简单检查,以查看您的输入文件在上次写入输出文件之后是否已被修改。如果是,则使用输入文件中的信息编写输出文件,如果不是,则使用当前输出文件。这不应该导致显着的性能损失。 – Wouter 2012-07-28 21:29:53

回答

2

使用file函数读取文件:

$array = file('file1.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 

并输出它,使用file_put_contentsimplode

file_put_contents('file2.txt', implode("\n", $array)); 
+0

这不是OP要求的。仔细读。 – 2012-07-28 21:33:34

+1

这应该游泳,非常感谢! – xtraorange 2012-07-28 21:33:54

+0

@xtraorange:要么我很困惑,要么你感到困惑。 – 2012-07-28 21:36:17

2
$array = file($thefile,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES); 
file_put_contents($theotherfile, "return array(\n ".implode(",\n ", $array)."\n);"; 
1

您可以使用var_export()生成所需输出。

例子:

$array = array(); 
for ($i = 0; $i < 10; $i++) { 
    $array[md5($i)] = sha1($i); 
} 

echo var_export($array); 

结果:

array (
    'cfcd208495d565ef66e7dff9f98764da' => 'b6589fc6ab0dc82cf12099d1c2d40ab994e8410c', 
    'c4ca4238a0b923820dcc509a6f75849b' => '356a192b7913b04c54574d18c28d46e6395428ab', 
    'c81e728d9d4c2f636f067f89cc14862c' => 'da4b9237bacccdf19c0760cab7aec4a8359010b0', 
    'eccbc87e4b5ce2fe28308fd9f2a7baf3' => '77de68daecd823babbb58edb1c8e14d7106e83bb', 
    'a87ff679a2f3e71d9181a67b7542122c' => '1b6453892473a467d07372d45eb05abc2031647a', 
    'e4da3b7fbbce2345d7772b0674a318d5' => 'ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4', 
    '1679091c5a880faf6fb5e6087eb1b2dc' => 'c1dfd96eea8cc2b62785275bca38ac261256e278', 
    '8f14e45fceea167a5a36dedd4bea2543' => '902ba3cda1883801594b6e1b452790cc53948fda', 
    'c9f0f895fb98ab9159f51fd0297e236d' => 'fe5dbbcea5ce7e2988b8c69bcfdfde8904aabc1f', 
    '45c48cce2e2d7fbdea1afc51c7c6ad26' => '0ade7c2cf97f75d009975f4d720d1fa6c19f4897', 
)