Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zmienna w pliku tekstowym, Jak ?
jareqpl
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.12.2008

Ostrzeżenie: (0%)
-----


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.

Ten post edytował jareqpl 20.11.2011, 19:26:16
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
buliq
post
Post #2





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
mortus
post
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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().
Go to the top of the page
+Quote Post
by_ikar
post
Post #4





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Wyrażenia regularne jak napisał mój przedmówca, albo zrób to jako zwykły plik php i includuj.
Go to the top of the page
+Quote Post
jareqpl
post
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.12.2008

Ostrzeżenie: (0%)
-----


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.

Ten post edytował jareqpl 21.11.2011, 20:59:07
Go to the top of the page
+Quote Post
by_ikar
post
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
jareqpl
post
Post #7





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.12.2008

Ostrzeżenie: (0%)
-----


rozumiem, ale po co mi zmiana większej ilości wyrażeń?
i tak zmieniam tylko _GRACZ_ -> $gracz
Go to the top of the page
+Quote Post
CuteOne
post
Post #8





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post
Orzeszekk
post
Post #9





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

Ostrzeżenie: (0%)
-----


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?

Ten post edytował Orzeszekk 22.11.2011, 00:46:38
Go to the top of the page
+Quote Post
jareqpl
post
Post #10





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.12.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 20:10