2011-05-16 52 views
1

我該如何着手編寫一個php腳本,該腳本從文本文件中特定位置的6位數減去10。例如,我有「030.00」在一個文件中的位置105-110,我想減去010,使它「020.00」PHP腳本修改文件位置的文本

+0

這是一個標準格式,例如。 DDD.DD? – CristiC 2011-05-16 13:55:40

+0

是的,這是如何格式請求 – Technupe 2011-05-16 13:57:19

回答

0

作爲一個標準的格式,我建議是這樣的:

$myFile = "yourFile.txt"; 
$fh = fopen($myFile, 'r'); 
$fileContent = fread($fh, filesize($myFile)); 

$toBeReplaced = (float) substr($fileContents, 105, 6); 
$newString = str_pad(($toBeReplaced - 10), 6, "0", STR_PAD_LEFT); 

$finalString = substr($fileContents, 0, 104) . $newString . substr($fileContents, 111, strlen ($fileContents) - 117); 
fclose($fh); 

$myFile = "newFile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
fwrite($fh, $finalString); 
fclose($fh); 

我希望我已經計算出正確的位置,因爲我無法測試它。但你得到了ideea。

0
$val = (float) substr($str, 105, 5); 
$val = number_format($val - 10, 2); 
$str = substr_replace($str, $val, 105, 5); 

這應該做你在找什麼。另一種選擇是正則表達式,但可能會有錯誤的餘地。如果你知道確切的位置,每次你可以這樣做。

--edited--

固定在SUBSTR

+0

所以我像往常一樣打開文件我需要做一個fwrite? – Technupe 2011-05-16 14:12:42

+0

哦,我完全跳過了文本文件的一部分。我不好,把克里斯的答案與我的答案結合起來,你就有完整的解決方案 – Matt 2011-05-16 14:17:25

0

打開方式的fopen文件()的位置。做一個foreach循環來遍歷每一行。

foreach ($lines as $line_num => $line) { 

然後用就行SUBSTR()的問題得到你想要的數據,你就會有數據爲字符串。將它轉換爲一個int,你可以從它中減去。

希望有幫助!