Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zamiana tekstu na include.
Forum PHP.pl > Forum > Przedszkole
!*!
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ę?
sazian
  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
!*!
  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
#luq
mb_strpos + foreach
!*!
Tylko że nie bardzo wiem jak zabrać się za zmianę konkretnego tekstu na funkcje include która jest do niego przypisana.
sazian
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. ?>
!*!
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.
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.