2012-12-05 75 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文件的最後一行。