Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] podstawienie php za html
Lee
post
Post #1





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


Mam taki kod
  1. <?php
  2. $szablon = file_get_contents("./theme/Classic/news.tpl");
  3. $szablon = preg_replace('/{(.*?)}/si', "$$1", $szablon);
  4. echo $szablon;
  5. ?>

który podstawia mi zamiast np {title} tekst $title (w tym echo $szablon pokazuje mi $title jako tekst a nie zawartosć zmiennej $title)

no i jak włąsnie zrobić, żeby przetowrzyło mi {title} na $title, ale zamiast tego $title wyświetliło mi jej zawartosć (np Moja Strona)

pozdrawiam winksmiley.jpg


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
Athlan
post
Post #2





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


może zrób tak:

  1. <?php
  2. function parser($parse_file, $parse_array = array())
  3. {
  4. if(is_file($parse_file))
  5. {
  6. $parse_size = filesize($parse_file);
  7.  
  8. if($parse_size < 1)
  9. {
  10. $parse_size = 1;
  11. }
  12.  
  13. $parse_handler = fopen($parse_file, "r");
  14. $parse_value = fread($parse_handler, $parse_size);
  15.  
  16. foreach($parse_array as $pre_code => $pre_key)
  17. {
  18. $parse_value = str_replace('{'.$pre_code.'}', $pre_key, $parse_value);
  19. }
  20.  
  21. fclose($parse_handler);
  22.  
  23. $result = $parse_value;
  24. }
  25. else
  26. {
  27. $result = "I can't find template file '$parse_file'!";
  28. }
  29.  
  30. return $result;
  31. }
  32. ?>


uzycie:

  1. <?php
  2. // tutaj nasza funkcja parsera
  3.  
  4. $zmienna1 = 'a';
  5. $zmienna2 = 'b';
  6. $zmienna3 = 'c';
  7.  
  8. $preparse = array(
  9. 'ZMIENNA1' => $zmienna1,
  10. 'ZMIENNA2' => $zmienna2,
  11. 'ZMIENNA3' => $zmienna3
  12. );
  13. echo parser('template.tpl', $preparse);
  14. ?>


templat:

  1. {ZMIENNA1} hehe {ZMIENNA2} no i ostatnie: {ZMIENNA3}


Ten post edytował Athlan 31.07.2006, 13:41:09


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
Lee
post
Post #3





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


hmm no niby ok jest wszystko, ale ja to bardziej obiektowo robie winksmiley.jpg ale dobra chyba poradze sobie z przeróbką pod klase


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
Athlan
post
Post #4





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Ta? kod z posta #1 chyba nie jest obiektowo...

mój parser (prehistoria) ma za zadanie pokazać Ci że masz wsadzić dane do tablicy i wywalić je w parserze w foreach() w odpowiedni sposób

to na tyle smile.gif

pozdrawiam Cię smile.gif


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
Lee
post
Post #5





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


no tak ale mój kod łatwo obiektowo przerobić winksmiley.jpg chociarz ten już też przerobiłęm (funkcje) - nie obrazisz się chyba jak go wykorzystam smile.gif ?

przerobiony kod jak by ktoś chciał (odrazu jako klasa winksmiley.jpg)
  1. <?php
  2.  
  3. final class template{
  4. public $parse_size;
  5. public $parse_handler;
  6. public $parse_value;
  7. public $pre_key;
  8. public $pre_code;
  9. public $converted;
  10.  
  11. public function parser($parse_file, $parse_array = array())
  12. {
  13. if(is_file($parse_file))
  14. {
  15. $this -> parse_size = filesize($parse_file);
  16.  
  17. if($this -> parse_size < 1)
  18. {
  19. $this -> parse_size = 1;
  20. }
  21.  
  22. $this -> parse_handler = fopen($parse_file, "r");
  23. $this -> parse_value = fread($this -> parse_handler, $this -> parse_size);
  24.  
  25. foreach($parse_array as $this -> pre_code => $this -> pre_key)
  26. {
  27. $this -> parse_value = str_replace('{'.$this -> pre_code.'}', $this -> pre_key, $this -> parse_value);
  28. }
  29.  
  30. fclose($this -> parse_handler);
  31.  
  32. $this -> converted = $this -> parse_value;
  33. }
  34. else
  35. {
  36. $this -> converted = 'Nie mogę odnaleźć pliku '.$this -> parse_file.'!';
  37. }
  38.  
  39. return $this -> converted;
  40. }
  41. }
  42.  
  43. $template = new template;
  44.  
  45. ?>


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
Athlan
post
Post #6





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


omg, przecież to bedzie dłuzej chodzić... pomyśl czasem czy pojedynczychfunkcji po prostu nie mozęsz zostawić...

@Lee: po to Ci ten kod dałem żebyś sobie go wziął... btw opis całości jak coś: http://www.vgroup.pl/tutorials/4/

edit: i daj sobie tam konstuktor jeszcze... cache dopisz smile.gif

pozdrawiam smile.gif

Ten post edytował Athlan 31.07.2006, 14:19:14


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
Lee
post
Post #7





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


narazie robie system newsów obiektowo + templaty więc w cache się nie bawie jeszcze, ale konstruktor...

UPDATE

Jak zrobić, żeby czytało kod z pomiędzy znaczników
<!-- START news --> i <!-- END news --> ? ponieważ chcę w jednym pliku zrobić wyświetlanie newsów, dalszej części ich i dodawania komentów i to będzie wyglądać tak (news.tpl)
Kod php
  1. <?php
  2. <!-- START news -->
  3. // HTML z newsem
  4. <!-- END news ->>
  5.  
  6. <!-- START read_more -->
  7. // HTML z dalszą częścią newsa
  8. <!-- END read_more -->
  9.  
  10. // itp.
  11. ?>


da się tak zrobić ? :|

Pozdrawiam rolleyes.gif

Ten post edytował Lee 31.07.2006, 16:44:15


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
Athlan
post
Post #8





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


nie wiem... może zastosuj tutaj preg_replace_callback" title="Zobacz w manualu php" target="_manual hmm ?

odpowiednią część kodu wlepić w tą funckję i przeparsować, nie wiem czy to dobry pomysł smile.gif

pozdrawiam smile.gif


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
Lee
post
Post #9





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


wymyśliłem, żeby użyć wyrażeń regularnych (słabo je znam coś ....) i zorbić tak, że mam kod
<!-- START news --> i <!-- END news --> i wyrażeniami regularnymi zrobić tak żeby przerobiło
<!-- START news --> na if ($_GET['mod'] == 'news') {
a <!-- END news --> na }
tylko nie wiem czy da rade takie coś zrobić to 1, dwa to jeżeli da rade to nie wiem jak to zrobić rolleyes.gif

btw. macie jakis kurs po POLSKU dotyczący wyrażen regularnych bo czuje że bez nich dużo nie rusze dalej... =/

Ten post edytował Lee 1.08.2006, 20:29:09


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
Athlan
post
Post #10





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


jeżeli masz ulepszyć mój parser to proszę:

http://php5.pl/php/wyrazenia_regularne

pozdro smile.gif


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
Apo
post
Post #11





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


to ja polecam funkcje str_replace.
Go to the top of the page
+Quote Post
Athlan
post
Post #12





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Cytat
to ja polecam funkcje str_replace.


omg smile.gif

str_replace tutaj nic nie załatwi... trzeba przeparsowac środek kodu pomiędzy jakimiś elementami a nie część stałą np <garnek> na <rondel>... str_replace nie poradzi sobie z przeparsowaniem:

[cos]ELEMENT[/cos]

pozdrawiam Apo smile.gif

Ten post edytował Athlan 1.08.2006, 20:50:29


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
Lee
post
Post #13





Grupa: Zarejestrowani
Postów: 319
Pomógł: 0
Dołączył: 11.04.2006
Skąd: Chojnów

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


jak by str_replace coś pomogło to bym nie pisał tego tematu nawet bo bym sam to zrobił sleep.gif

ma ktoś jakiś pomysł na rozwiązanie mojego (chyba) nietypowego, bo zaraz wyjde z siebie i stanę obok sad.gif


--------------------
Nie pomagam w sprawach php na GG i PW od tego jest forum!
Go to the top of the page
+Quote Post
Apo
post
Post #14





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


np:
  1. <?php $content = str_replace('<!-- START news -->', '<?php if ($_GET['mod'] == 'news') { ?>', $content); ?>


itd

Ten post edytował Apo 1.08.2006, 21:08:12
Go to the top of the page
+Quote Post
Athlan
post
Post #15





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


pregi sa szybsze

btw: masz tutaj zastosownie tego, co chcesz osiągnąć:
http://beatsfactory.pl/qbs/justit.html

pozdrawiam smile.gif


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 10:49