PHP脚本修改文件位置的文本

问题描述:

我该如何着手编写一个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

作为一个标准的格式,我建议是这样的:

$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。

$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

打开方式的fopen文件()的位置。做一个foreach循环来遍历每一行。

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

然后用就行SUBSTR()的问题得到你想要的数据,你就会有数据为字符串。将它转换为一个int,你可以从它中减去。

希望有帮助!