Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [skrypt] Wywoływanie kodu PHP z napisów
pitbull82
post
Post #1





Grupa: Zarejestrowani
Postów: 167
Pomógł: 0
Dołączył: 30.04.2004
Skąd: Częstochowa

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


Witam

Z góry mówię, że jak ktoś uzna, że się to nie nadaje do tego działu, to można skasować (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Tak naprawdę nie jest to skrypt tylko funkcja. Niekiedy może się okazać przydatna, jeśli mamy zapisany kod w łańcuchu, a pośród zwykłego htmla czy tekstu znajduje się kod php.

Mnie funkcja przydała się, gdy chciałem zrobić porcjonowanie danych z pliku, a w pliku miałem też kod php. Za pomocą skryptu (innego) wyświetlałem odpowiednią część pliku, ale ponieważ nie robiłem już tego za pomocą include, tylko zapisując część pliku do zmiennej, kod php już się nie wywoływał.

Oto funkcja:

  1. <?php
  2. /*
  3. --------------------------------------------------------------------------------
  4. Autor: Marcin Nabiałek aka PITBULL
  5. E-mail: it-developer@wp.pl
  6. Data utworzenia: 23.07.2004
  7. --------------------------------------------------------------------------------
  8. Funkcja wypisuje zawartosc napisu. Jesli w napisie znajduja sie znaczniki php,
  9. funkcja wykonuje tresc polecen zawartych miedzy znacznikami.
  10. Poczatek skryptu php moze byc zapisany jedynie w formie dlugiej, czyli <?php
  11. Aby funkcja wykonala kod php, w napisie musi byc taka sama ilosc znacznikow 
  12. poczatku skryptu php, jak i konca.
  13. */
  14.  
  15.  
  16. function executePhpfromString($tresc)
  17. {
  18. $ile_pocz=substr_count($tresc,&#092;"<?php\");
  19. $ile_kon=(substr_count(htmlspecialchars($tresc),&#092;"?&gt;\"));
  20.  
  21. $j=0;
  22. $i=0;
  23.  
  24. if ($ile_pocz>&& $ile_pocz==$ile_kon)
  25. {
  26. while ($i<$ile_pocz)
  27. {
  28. $gdzie=strpos($tresc,&#092;"<?php\");
  29. $tab[$j]=substr($tresc, 0,$gdzie);
  30. $j++;
  31. $tresc=substr($tresc,$gdzie+6,strlen($tresc));
  32. $gdzie=0;
  33. while ($gdzie+1<strlen($tresc))
  34. {
  35. if ($tresc[$gdzie]=='?' && $tresc[$gdzie+1]=='>')
  36. break;
  37. $gdzie++;  
  38. }
  39. $tab[$j]=substr($tresc,0,$gdzie+2);  
  40. $j++;
  41. $tresc=substr($tresc,$gdzie+2,strlen($tresc));
  42. $i++;
  43. }
  44.  
  45. if (strlen($tresc)>0)
  46. $tab[$j]=$tresc;
  47.  
  48.  
  49. for ($i=0;$i<count($tab);$i++)
  50. {
  51. if (strlen($tab[$i])>=&& $tab[$i][strlen($tab[$i])-1]=='>' && $tab[$i][strlen($tab[$i])-2]=='?')
  52. eval (substr($tab[$i],0,strlen($tab[$i])-2));
  53. else
  54. echo $tab[$i];
  55. }
  56.  
  57. }
  58. else echo $tresc;
  59. }
  60. ?>


A to przykładowe wywołanie:

  1. <?php
  2. $napis='NAPIS 1 <br /><?php echo \"tekst1<br />\"; echo \"tekst2<br />\";?> NAPIS 2 <br /><?php echo \"napis3\";?>';
  3. executePhpfromString($napis);
  4. ?>


Gdyby ktoś chciał użyć i stosować, proszę bardzo, tylko proszę nie kasować informacji o mnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Oczywiście, ponieważ to dział oceny, czekam na opinie czy to w ogóle jest przydatne, potrzebne, dobrze zrealizowane itp.

Pozdrawiam
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: 22.12.2025 - 14:28