Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: do zmiennej przypisac includowany plik
Forum PHP.pl > Forum > Przedszkole
Czechu
Witam.
Mam plik z kodem HTML w którym znajdują się znaczniki np. {linki} {archiwum} {ksiega} ... chciałbym ten plik includować do strony php lecz przed zaincludowaniem zmienić powyzsze znaczniki na polecenia php require("linki"); itd...

czy ktoś mógłby mi powiedziec jak to zrobić?

myslałem nad str_replace ale aby skorzystac z tej funkcji musze miec do jakiejś zmienej przypisaną zawartosc pliku... i tutaj pojawia się problem...

a moze macie inne pomysły?

z góry dziekuje za pomoc.
Lukasz Luczak
Witam,

  1. <?php
  2. $zawartosc = file_get_contents( $plik);
  3. $zawartosc = str_replace( $co, $naco, $zawartosc);
  4. echo( $zawartosc);
  5. ?>


Pozdrawiam,
Czechu
wszystko było by spoko gdyby nie... Fatal error: Call to undefined function: file_get_contents() sad.gif

i co teraz? moze błąd w druku?


Pozdrawiam, i prosze o pomoc;)
bregovic
to oznacza ze zdecydowanie powinienes upgrade'owac twoja wersje php - bo musi byc nizsza niz 4.3.0...

jesli zas nie mozesz tego zrobic to zrob tak:
  1. <?php
  2. include $plik;
  3. $zawartosc = ob_get_clean();
  4. $zawartosc = str_replace($co, $naco, $zawartosc);
  5. ?>
lub cos takiego...
tiraeth
  1. <?php
  2.  
  3. $tpl_File = split(&#092;"n\", file(\"nazwapliku.html\"));
  4.  
  5. $tpl_File = preg_replace('/{(.*?)}/', '<? include(1); ?>', $tpl_File);
  6. ?>


tylko właśnie nie pamiętam jaka funkcja odpowiadała za wykonanie kodu zawartego w stringu......

btw. kiedyś napisałem taki prosty system tpl smile.gif poszukaj w moich postach biggrin.gif
FiDO
Temat zdecydowanie nie Pro.. przenoszę.
Czechu
moja wersja php to 4.1.2 , a to dlatego ze ludzie którzy prowadzą servery lustrzane z pakietami debiana (np. security.debian.org) juz od dawna nie udostepniali nowszych stabilnych wersji php, i nie ma jak zainstalowac tego przez apt-get , a zwyczajnie nie chce mi sie motac z tym wszsytkim.

wracajac do sprawy....

  1. <?
  2. include main;
  3.  
  4.  $w = ob_get_clean();
  5.  $szukaj = array('{linki}', '{archiwum}', '{blog}');
  6.  $zamien = array(&#092;" <? require('linki.php'); ?> \", \" <? require('arch.php'); ?> \", \" <? require('blog.php'); ?> \");
  7.  $wynik = str_replace($szukaj, $zamien, $w);
  8.  
  9.  print(iso(\"$wynik\"));
  10. ?>

a wynik....

Fatal error: Call to undefined function: ob_get_clean()

worriedsmiley.gif
silent
  1. <?
  2. include main;
  3.  
  4. $w = ob_get_contents();
  5. $szukaj = array('{linki}', '{archiwum}', '{blog}');
  6. $zamien = array(&#092;" <? require('linki.php'); ?> \", \" <? require('arch.php'); ?> \", \" <? require('blog.php'); ?> \");
  7. $wynik = str_replace($szukaj, $zamien, $w);
  8.  
  9. print(iso(\"$wynik\"));
  10. ?>
Czechu
Dziękuję wszystkim za pomoc, ostatni podany kod php jest prawidłowy, plik ładuje się do zmiennej , znaczniki {} zamieniają sie na require ale...... nic poza tym... polecenia require nie wykonują się tylko pozostają w tekscie jako tekst w dodatku niewidoczny (widoczny tylko w podglądzie źródła)

co mozna na to poradzic? sad.gif
bregovic
mozesz zapisac ten plik i go uruchomic... a co do php to twoja wersja jest na prawde stara - zdecydowanie zalecalbym ./configure && make && make install na ostatniej stabilnej wersji...
Czechu
cóz... wszystkie porady pomogły, ale zadna z osobna nie była dla mnie dobra:)

zebrałem wszystko do kupy i zrobiłem w koncu to o co mi chodzi... mianowicie a panelu edycyjnym zastosowałem...

  1. <?
  2.  
  3. {
  4. if (!(isset($act)))
  5. {
  6.  
  7. print(iso(&#092;"<div id=top><br>Edytor HTML<br><br></div>
  8. <b>Zmień wygląd:</b><br><br>
  9. <a href=?func=edytor&html=../main>Strona główna</a><br>
  10. Wpis do bloga<br>
  11. Archiwum<br>
  12. Księga gości<br>
  13. Wpis do księgi<br>
  14. Strona z komentarzami<br>
  15. Komentarz<br>
  16. Arkusz stylów<br><br>&#092;"));
  17.  
  18. if ($html<>&#092;"\" && file_exists($html)) { 
  19. echo&#092;"<p>Edycja pliku: <b>$html</b> 
  20. <form action=?func=edytor&act=zap method=post> 
  21. <input type=hidden name=html value=$html> 
  22. <textarea name=tekst rows=30 cols=70>&#092;"; 
  23.  
  24. $f = fopen($html,&#092;"r\"); 
  25. while(!feof($f)) echo fread($f,1024); 
  26. fclose($f); 
  27.  
  28. $w = ob_get_contents();
  29.  
  30.  $szukaj = array(&#092;" <? require('linki.php'); ?> \", \" <? require('arch.php'); ?> \", \" <? require('blog.php'); ?> \");
  31.  $zamien = array(\" {linki} \", \" {archiwum} \", \" {blog} \");
  32.  $wynik = str_replace($szukaj, $zamien, $w);
  33.  
  34. echo\"$wynik</textarea><br><input type=submit value=Zmień></form>\"; 
  35.  
  36. }else
  37. if($act == zap)
  38. {
  39.  
  40.  $w = \"$tekst\";
  41.  $szukaj = array('{linki}', '{archiwum}', '{blog}');
  42.  $zamien = array(\" <? require('linki.php'); ?> \", \" <? require('arch.php'); ?> \", \" <? require('blog.php'); ?> \");
  43.  $t = str_replace($szukaj, $zamien, $w);
  44.  
  45. $f=fopen($html,\"w\");
  46. fputs($f, stripslashes($t)); 
  47. fclose($f);
  48.  
  49. print(iso(\"<div id=top><br><meta http-equiv=refresh content='2; url=?func=edytor'> $html został zmodyfikowany!<br><br>\"));
  50.  
  51. }
  52. ?>



natomiast w pliku index.php po prostu

Kod
include main;



moze troche kombinowania jest... ale efekt koncowy jest taki jaki chciałem.. czyli wszystko działa poprawnie:)

jesli macie jakies pomysły na usprawnienie powyzszej metody, byłbym wdzięczny:)
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.