Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Generator - Przenoszenie plików z edycją w locie
Forum PHP.pl > Forum > PHP
Adi32
Witajcie.

Napisałem generator stron, który z severa głównego przenosi odpowiednie pliku wg. wcześniej wypełnionego formularza jednak wystąpił mały problem gdyż niektórych plików nie da się wybrać ze zbioru tylko trzeba edytować.

Tak więc powiedzmy, że przykładowo kopiujemy plik php:

config.php

i jego zawartość:
  1. <?php
  2.  
  3. $cfg['MySQL.Host'] = "{$host}";
  4. $cfg['MySQL.Username'] = "{$user}";
  5. $cfg['MySQL.Password'] = "{$pass}";
  6. $cfg['MySQL.Database'] = "{$db}";
  7. $cfg['index'] = "{$_index}";
  8.  
  9. ?>


Chciałbym, żeby tablica $cfg była bez zmian, a zmienne w {} (klamerkach, może to być inny znak wyróżniający) były pobierane z tego co wklepane w formularz.

Wynikają 2 pytania.

1. Jak w ogóle edytować plik w locie?

Pliki przesyłam pętlą rekurencyjną którą sobie napisałem, metoda to:

  1. ftp_put($conn, $remote.$file_name, $source.$file_name, FTP_ASCII)


2. Jak edytować konkretne elementy w kodzie?

Mam nadzieję, że da się coś zrobić...


Poradziłem sobie. Temat można skasować, chyba że kogoś interesuje rozwiązanie...
Ilware
Wczytujesz cały plik np funkcją file_get_contents( sciezka ), następnie definiujesz sobie jakoś zmienne do zamiany w nim, proponuje {{}} bo jedna może się pomylić a następnie po wczytaniu pliku dajesz

  1. $body = file_get_contents( sciezka );
  2. $zamian['HOST.NAME'] = $Name;
  3. $zamian['USER.NAME'] = $Name;
  4. // itd
  5. //na koniec zamiana
  6. foreach( $zamian as $nazwaZmiennej => $wartosc){
  7. $sBody = str_replace( '{{'.$nazwaZmiennej .'}}', $wartosc, $body );
  8. }


w pliku robisz

  1. <?php
  2.  
  3. $cfg['MySQL.Host'] = "{{HOST.NAME}}";
  4. $cfg['MySQL.Username'] = "{{USER.NAME}}";
  5. itd.
  6. ?>


po tym zapisujesz zmiany w pliku
Adi32
Dzięki za odpowiedź ale wcześniej poradziłem sobie jak napisałem, tylko złączyło mi posty w jeden.

Mój sposób jest bardzo podobny:

  1. preg_replace('/s\{(.*?)\}/e',"sess('\\1')",$this->dane);


  1. function sess($cos)
  2. {
  3. $sss = edytuj::getInstance();
  4. return $sss->sess($cos);
  5. }


  1. public function sess($cos)
  2. {
  3. return $_SESSION[$cos];
  4. }


a w przenoszonym pliku:

  1.  
  2. $cfg['MySQL.Host'] = "s{baza_server}";
  3. $cfg['MySQL.Username'] = "s{baza_user}";
  4. $cfg['MySQL.Password'] = "s{baza_haslo}";
  5. $cfg['MySQL.Database'] = "s{baza_nazwa}";


literka s przed {} oznacza, że będzie to string. Zakładam, że będę w przyszłości używał jeszcze innych typów (wstawianie zmiennych w czystej postaci itd).

Dzięki i 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.