Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykonanie kodu zmiennej
Forum PHP.pl > Forum > Przedszkole
Gość_Gość
Gdy mam tablicę i jedna z jej komórek ma zawartość np:

  1. <?php
  2. $tablica[1] = 'require(plik.php)';
  3. ?>


to jak wykonać kod tej komórki tablicy?
nospor
trzeba użyc eval:

  1. <?php
  2.  
  3. $tablica[1] = &#092;"require('plik.php');\"; //poprawilem
  4. eval($tablica[1]);
  5.  
  6. ?>
Guest
A gdybym nie chciał wyświetlić tego co zwróci eval, tylko wczytać do zmiennej?

  1. <?php
  2. $zmienna =eval($tablica[1]);
  3. ?>


niestety nie działa :/.
w manualu do php znalazłem, że należy:

  1. <?php
  2. eval(&#092;"$str = \"$str\";\");
  3. ?>


ale to też nie działa nie wiem czemu :/
nospor
ale kombinujesz. Jak chcesz dostać coś co jest zwracane to napisz funkcje która ci coś zwróci i ją wywołaj.

  1. <?php
  2.  
  3. function coss()
  4. {
  5. return &#092;"cos\";
  6. }
  7.  
  8. //..gdzieś dalej
  9. $tablica[1]='coss';
  10.  
  11. $zmienna = call_user_func($tablica[1]);
  12.  
  13. ?>


edit : poprawilem nazwę funkcji z cos na coss. cos to zastrzezona i errory rzucało
Guest
chyba mnie źle zrozumiałeś.

gdy mam kod:

  1. <?php
  2. $imie = 'Ktos';
  3. $zmienna = 'echo \"Nazywam sie $imie\" ';
  4. ?>


to gdy wywołam:

  1. <?php
  2. eval($zmienna);
  3. ?>


wyświetli mi się "Nazywam się Ktoś". A ja chcę miec to "Nazywam się Ktoś" w zmiennej.
nospor
Dobrze cię zrozumiałem. Ty mnie źle zrozumiałeś.
eval" title="Zobacz w manualu PHP" target="_manual wykonuje kod a nie zwraca.
Zrób jak proponowałem a będzie git
Guest
Nie bardzo wiem jak to powinno wyglądać w praktyce. :
  1. <?php
  2.  
  3. function eval2($arg1) {
  4.     return eval($arg1); 
  5. }
  6.  
  7. $zmienna = eval2($zmienna); 
  8.  
  9. ?>

?
crash
Moja propozycja to użycie buforów:
  1. <?php
  2. require( './plik.php' );
  3. $dane = ob_get_contents();
  4. ?>

I w ten sposób masz w zmiennej $dane wynik dołączony z plik.php...
nospor
propzycja @crashu powinna się sprawdzić w Twoim przypadku.

Mi chodzilo bardziej o coś takiego:
  1. <?php
  2.  
  3. function coss() {
  4. return &#092;"echo 'ala'\"; 
  5. }
  6.  
  7. $zmienna = coss();
  8.  
  9. ?>
Już bez eval tylko masz funkcję która zwraca powiedzmy jakieś echa. Aczkolwiek pomysł @crashu jest lepszy
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.