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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
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
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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ale dobra chyba poradze sobie z przeróbką pod klase
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pozdrawiam Cię (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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ć (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) chociarz ten już też przerobiłęm (funkcje) - nie obrazisz się chyba jak go wykorzystam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ?

przerobiony kod jak by ktoś chciał (odrazu jako klasa (IMG:http://forum.php.pl/style_emoticons/default/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. ?>
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Athlan 31.07.2006, 14:19:14
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 (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)

Ten post edytował Lee 31.07.2006, 16:44:15
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ł (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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ć (IMG:http://forum.php.pl/style_emoticons/default/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
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Athlan 1.08.2006, 20:50:29
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ł (IMG:http://forum.php.pl/style_emoticons/default/sleep.gif)

ma ktoś jakiś pomysł na rozwiązanie mojego (chyba) nietypowego, bo zaraz wyjde z siebie i stanę obok (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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: 23.08.2025 - 22:34