Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Operacje na pliku
Forum PHP.pl > Forum > Przedszkole
JaroMus
Mam plik tekstowy nazwa.cnc Wygląda on następująco:

Machine Control File : out.cnc
Created by dxf2cnc.

%%%%%%%%%
G90 M3 F650
T4 Z8
F150.00 T2
G0 Z8
X179.00 Y119.00
Z1
G1 Z-0.50 F50.00
G1 X71.10 Y119.00 F150.00
G0 Z8
X179.00 Y11.00
Z1
G1 Z-0.50 F50.00
G1 X11.00 Y11.00 F150.00
G0 Z8
M5
G0 X0 Y0
M30
%%%%%%%%%%

Chcę napisać skrypt który będzie odczytywał po całej lini i gdy cztery pierwsze znaki będą to G1 Z to na końcu lini dopisze po space F50.00 a gdy będą to znaki G1 X, G2 X, G3 X to na końcu lini dopisze po space F150.00 (tak jak wyrzej dopisane na czerwono)

Dostałem od kolegi taki skrypt:

  1. <?php
  2. $f=fopen("jakis.cnc","r");
  3. if($f) {
  4. while(!feof($f)) {
  5. $line=fgets($f);
  6. switch(substr($line,0,4)) {
  7. case "G1 Z":
  8. $line.=" F50.00";
  9. break;
  10. case "G1 X":
  11. case "G2 X":
  12. case "G3 X":
  13. $line.=" F150.00";
  14. }
  15. echo $line."<br>";
  16. }
  17. fclose($f);
  18. }
  19. ?>


Jak zrobić żeby wybierać plik przez formularz
<input type="file" name="plik">

i żeby po przejściu tego skryptu plik był zapisany z tymi poprawkami ?

Proszę o pomoc. Mile widzianie przykłady kodu.
Ociu
  1. <?php
  2. $f = fopen("jakis.cnc","r");
  3. if(!$f) die('Cannot open');
  4. foreach($f AS $line) {
  5. if(preg_match('/^G1 Z/'), $line) {
  6.  fputs($f, $line.' F50.00');
  7. } else {
  8. if(preg_match('/^G[1-3] X/'), $line) {
  9.  fputs($f, $line.' F150.00');
  10. }
  11. }
  12. ?>


Może tak ? Nie wiem czy to będzie działać, bo w ogóle nie orientuje się w plikach tekstowych.

pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.