2012-12-05 109 views
0

我有以下的txt文件:PHP爆炸txt文件

++嫁给++ M +基础B + NY ++

++杰克++˚F++Ø++ LS ++

写入到一个.txt文件:

名称:嫁给

性别:男

血型:B型

城市:纽约

名称:杰克

性别:女

血型:O型

城市: LS

我的代码是:

$fn = fopen("test.txt","r") or die("fail to open file"); 

$content = array(); 

while($row = fgets($fn)) { 

    $num = explode("++", $row); 
    $name = $num[0]; 
    $sex = $num[1]; 
    $blood = $num[2]; 
    $city = $num[3]; 
} 

$fp = fopen('output.txt', 'w');  
fwrite($fp, $row); 
fclose($fp); 

如若这项工作?因为它什么都不返回。

Thx。

+1

您解析文本文件,将其放入变量,然后不做任何事情。尝试转储$ num。 –

+0

你没有返回任何东西(或使用提取的变量)。 – Vyktor

回答

1
$fn = fopen("test.txt","r") or die("fail to open file"); 

while($row = fgets($fn)) { 
    list($sName, $sSex, $sBlood, $sCity) = explode("++", $row); 

    echo 'Name:' . $sName . '<br />'; 
    echo 'Sex:' . $sSex . '<br />'; 
    echo 'Blood type:' . $sBlood . '<br />'; 
    echo 'City:' . $sCity . '<br />'; 
} 

fclose($fn); 

要写到一个文件你必须先创建一个缓冲区,然后写入文件。最简单的方法是使用file_put_contents。请注意,file_put_content方法使用更多的内存,然后fopen,fwrite和fclose。

$fn = fopen("test.txt","r") or die("fail to open file"); 

$sBuffer = ''; 
while($row = fgets($fn)) { 
    list($sName, $sSex, $sBlood, $sCity) = explode("++", $row); 

    $sBuffer .= 'Name:' . $sName . PHP_EOL; 
    $sBuffer .= 'Sex:' . $sSex . PHP_EOL; 
    $sBuffer .= 'Blood type:' . $sBlood . PHP_EOL; 
    $sBuffer .= 'City:' . $sCity . PHP_EOL; 

    $sBuffer .= PHP_EOL; // There will be a empty line after each "set" 
} 

fclose($fn); 

file_put_contents('path/to/file.txt', $sBuffer); 

随着fopen,fwrite和fopen。

$fn = fopen("test.txt","r") or die("fail to open file"); 

$rWrite = fopen('path/to/file.txt', 'w') or die('Could not open file for writing'); 

while($row = fgets($fn)) { 
    list($sName, $sSex, $sBlood, $sCity) = explode("++", $row); 

    fwrite($rWrite, 'Name:' . $sName . PHP_EOL); 
    fwrite($rWrite, 'Sex:' . $sSex . PHP_EOL); 
    fwrite($rWrite, 'Blood type:' . $sBlood . PHP_EOL); 
    fwrite($rWrite, 'City:' . $sCity . PHP_EOL); 

    fwrite($rWrite, PHP_EOL); // There will be a empty line after each "set" 
} 

fclose($fn); 
fclose($rWrite); 
+0

如何写入.txt文件? – Ruth

0

它不输出任何东西,因为你正在使用arn't $name$sex等尝试更改下面的代码片段在你的代码,看看它现在:

while($row = fgets($fn)) 
{ 

    $num = explode("++", $row); 
    $name = $num[0]; 
    $sex = $num[1]; 
    $blood = $num[2]; 
    $city = $num[3]; 

    echo "$name $sex $blood $city<br>"; 
} 
0

你几乎是在正确的方向。您需要将您的写入文件包含在与获取内容相同的循环中。

$fn = fopen("test.txt","r") or die("fail to open file"); 

$fp = fopen('output.txt', 'w') or die('fail to open output file'); 
while($row = fgets($fn)) { 
    $num = explode("++", $row); 
    $name = $num[0]; 
    $sex = $num[1]; 
    $blood = $num[2]; 
    $city = $num[3]; 

    fwrite($fp, "Name:$name\n"); 
    fwrite($fp, "Sex:$sex\n"); 
    fwrite($fp, "Blood:$blood\n"); 
    fwrite($fp, "City:$city\n"); 
} 
fclose($fn); 
fclose($fp); 

您的初始代码将不起作用,因为fwrite需要一个字符串,并且您正在传递一个数组。如果您确实通过了字符串,它将只包含您的test.txt文件的最后一行。