Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zamiana tekstu na include.
!*!
post 30.12.2010, 14:28:48
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Jak można w PHP zamienić określony tekst na include lub inną opcje? Tworzę panel od edycji newsów i chciałbym dać możliwość wstawiania różnych rzeczy bez znajomości PHP np. wstawienie #tabela-wynik; includowałoby jakiś plik z np. połączeniem do bazy przy wyświetlaniu newsa.

  1. function zamien($text)
  2. {
  3. $e = array(
  4. '#tabela-wynik;' => 'wstaw wynik',
  5. '#tabela-ostatnie;' => 'wstaw ostatnie',
  6. '#tabela-nowe;' => 'wstaw nowe');
  7.  
  8. $text = strtr($text,$e);
  9. return $text;
  10. }


Czy jest w ogóle sposób na tego typu podmianę? Może taka operacja ma swoją nazwę?

Ten post edytował !*! 30.12.2010, 14:28:56


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
sazian
post 30.12.2010, 14:37:08
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


  1.  
  2. $e = array(
  3. '#tabela-wynik;' => 'wstaw wynik',
  4. '#tabela-ostatnie;' => 'wstaw ostatnie',
  5. '#tabela-nowe;' => 'wstaw nowe');
  6.  
  7. include $e['#tabela-wynik;'];
  8.  

o to chodzi questionmark.gif
Go to the top of the page
+Quote Post
!*!
post 30.12.2010, 14:48:03
Post #3





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


  1. function zamien($text)
  2. {
  3.  
  4.  
  5. $e = array(
  6. '#tabela-wynik;' => 'footer.php',
  7. '#tabela-ostatnie;' => 'wstaw ostatnie',
  8. '#tabela-nowe;' => 'wstaw nowe');
  9.  
  10. include $e['#tabela-wynik;'];
  11.  
  12. $text = strtr($text,$e);
  13.  
  14. return $text;
  15. }
  16.  
  17.  
  18. $art = 'ojej #tabela-wynik;';
  19. echo zamien($art);


Nie bardzo, ponieważ to ma działać na zasadzie jeśli w zdaniu ($art) występuje ciąg znaków np. #tabela-wynik; to includowany ma być plik który został do tej wartości przypisany, tutaj footer.php

Ten post edytował !*! 30.12.2010, 14:48:31


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
#luq
post 30.12.2010, 15:00:02
Post #4





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


mb_strpos + foreach

Ten post edytował #luq 30.12.2010, 15:01:07


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
!*!
post 1.01.2011, 12:29:41
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Tylko że nie bardzo wiem jak zabrać się za zmianę konkretnego tekstu na funkcje include która jest do niego przypisana.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
sazian
post 1.01.2011, 13:09:19
Post #6





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


takie coś questionmark.gif
oczywiście to tylko szkic i należy go trochę poprawić/zabezpieczyć
  1. <?php
  2. $tekst ="jakiś napis<br>#tabela-wynik;";
  3.  
  4. function zamiana($tekst){
  5. $e = array(
  6. '#tabela-wynik;' => 'wynik.php',
  7. '#tabela-ostatnie;' => 'ostatnie.php',
  8. '#tabela-nowe;' => 'nowe.php'
  9. );
  10. $tr=array();
  11.  
  12. foreach($e as $key => $value){
  13. if(mb_strpos($tekst,$key)!==false){
  14.  
  15. include_once $value;
  16. $tr[$key] = ob_get_contents();
  17. }
  18.  
  19. }
  20.  
  21. return strtr($tekst,$tr);
  22. }
  23.  
  24. echo zamiana($tekst);
  25.  
  26.  
  27. ?>
Go to the top of the page
+Quote Post
!*!
post 3.01.2011, 18:38:25
Post #7





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Staram się to przerobić na klasę:

  1. class Theme{
  2.  
  3. public $theme;
  4. public $tpl;
  5. public $data;
  6. public $tr;
  7. public function __construct($theme)
  8. {
  9. $this->theme = $theme;
  10. $this->tpl = file_get_contents('theme/'.$theme.'/index.tpl');
  11. $this->data = Array();
  12. //$this->tr = Array();
  13. } //end construct();
  14.  
  15. public function add($name, $value='')
  16. {
  17. if (is_array($name)) //sprawdzam czy tablica
  18. {
  19. $this->data = array_merge($this->data, $name);
  20. echo '<span style=display:block;color:red>tak to tablica</span>';
  21. //var_dump($name);
  22.  
  23. foreach($name as $key => $value)
  24. {
  25.  
  26. if(mb_strpos($this->tpl,$key)!==false)
  27. {
  28. include_once 'ns-include/'.$value;
  29. $this->tr[$key] = ob_get_contents();
  30. }
  31.  
  32. }// end foreach();
  33. }
  34. } //end add();
  35.  
  36. public function execute()
  37. {
  38. //echo $this->tpl;
  39. return strtr($this->tpl, $this->tr);
  40. } //end execute();
  41.  
  42. }//end class Theme


  1. $view = new Theme('test');
  2. $data = array(
  3. '#nawigacja;' => 'nav.php',
  4. '#tabela-ostatnie;' => 'nav3.php'
  5. );
  6. $view-> add($data);
  7. echo $view-> execute();


Czy ktoś mógłby to sprawdzić i powiedzieć czy jest dobrze? Jeśli chodzi o zastąpienie tekstu, funkcją include ? Pomijam zabezpieczenia, nimi zajmę się później.

Ten post edytował !*! 3.01.2011, 18:38:40


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:54