Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmienna w pliku tekstowym, Jak ?
Forum PHP.pl > Forum > PHP
jareqpl
Witam, mam mały problem i nie widze prostego rozwiązania.
Na potrzeby tego pytania napisałem malutki skrypt.

  1. $imie = 'Mateusz';
  2. $nazwisko = 'PHP';
  3. $tresc = file_get_contents('test.txt');
  4. echo $tresc;

zawartość pliku test.txt:
Twoje imię to: $imie, nazwisko to: $nazwisko
------ koniec zawartości----------

Moje pytanie brzmi, czy da się zrobić tak aby echo zwróciło taki wynik:
Twoje imię to: Mateusz, nazwisko to: PHP
obecnie zwraca: Twoje imię to: $imie, nazwisko to: $nazwisko

Pozdrawiam.
buliq
Nie da się tego tak łatwo zrobić, generalnie nie ma to dla mnie sensu, taki mały szablon.

Sprawdź do czego służy eval
mortus
Istnieje taka funkcja eval(), która mogłaby posłużyć do rozwiązania problemu. Jednak nie zaleca się używania tej funkcji ze względów bezpieczeństwa. Kwestia ta musi być dobrze przemyślana. Jednak moim zdaniem lepszym rozwiązaniem byłoby użycie wyrażeń regularnych i funkcji preg_replace() lub funkcji str_replace().
by_ikar
Wyrażenia regularne jak napisał mój przedmówca, albo zrób to jako zwykły plik php i includuj.
jareqpl
niestety plik .php nie wchodzi w gre, ponieważ w pliku tekstowym są przechowywane komendy które są wysyłane do serwera gry po wykonaniu określonych akcji przez użytkownika strony, w zmiennej $imie (wcześniej wyciągniete z sesji) jest przechowywany login użytkownika.
Dlatego admin kiedy dodaje własną komende, wpisuje cos takiego: jakas komenda _GRACZ_
i w pliku wygląda to tak: 'jakas komenda $gracz'
(więc jak widać używam już preg_replace)
następnie skrypt gdy wyciąga te komendy, przed wysłaniem przepuszcza tę komende przez eval i w ten sposób nick zostaje zamieniony na $nick
dlatego jedyna zmienna jaką upchnie ktoś w tym pliku to $gracz, a z tym niewiele zrobi.
Dzięki za pomoc.
by_ikar
Wewnątrz preg_replace również możesz zmieniać więcej niż jedną wartość, zależy od wyrażenia jakiego użyjesz. Możesz nawet 2 wyrażenia użyć w jednym preg_replace.
jareqpl
rozumiem, ale po co mi zmiana większej ilości wyrażeń?
i tak zmieniam tylko _GRACZ_ -> $gracz
CuteOne
Od tego typu rzeczy masz bazy danych... np. darmowy MySQL. Mieszanie w plikach jest:
- mało wydajne
- nieekonomiczne (edycja, usuwanie, dodawanie)
- kłopotliwe (jak wyżej)
- prowadzi do błędów (np. zapomniałeś dodać separator i kicha)
Orzeszekk
Rozumiem ze chcesz sobie zrobic plik językowy w którym będziesz trzymał wszystkie stringi?

to może pomoże ci zapisanie tego w postaci w pliku:

twoje imie to %s, twoje nazwisko to %s.

i wczytanie a następnie wyświetlenie za pomocą

  1. printf($tresc, $imie, $nazwisko);


nie jest to do konca to co chcesz ty zrobić ale jest w miare bezpieczne a podejrzewam ze ci wystarczy.


Ale jak dla mnie twoje rozwiązanie jest złe od podstaw. Skoro masz x komend to dlaczego dla każdej nie zrobisz osobnej klasy, z której każda ma własne parametry, nie określisz dla nich serializacji i deserializacji, a później zapiszesz w pliku tekstowym tablice takich zserializowanych klas polecen? majac takie cos mozesz na podstawie tego wygenerować juz ten plik docelowy komend dla serwera, wystarczy tylko dorobic odpowiednia metode.

skoro jakas aplikacja wysyla dane do serwera to moze trzeba zrobic odpowiedni plik php na serwerze ktoremu bedziesz przekazywal informacje poprzez parametry GET?
jareqpl
temat do zamknięcia, zrobiłem to co chciałem zrobić.
przykład powyżej był tylko PRZYKŁADEM ja to rozwiązanie wykorzystuje W ZUPEŁNIE INNYM celu.
Oczywiście można byłoby to też zrobić w bazie danych, ale i tak funkcja eval byłaby niezbędna.
Wykorzystałem plik bo jest to rozwiązanie szybsze, poza tym tam będzie góra 6 linijek.
Dzięki za rady, temat do zamknięcia.
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.