Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wykonanie kodu zmiennej, Wykonanie kodu zmiennej
-Gość_Gość-
post 6.07.2005, 11:53:49
Post #1





Goście







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?
Go to the top of the page
+Quote Post
nospor
post 6.07.2005, 11:59:35
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




trzeba użyc eval:

  1. <?php
  2.  
  3. $tablica[1] = &#092;"require('plik.php');\"; //poprawilem
  4. eval($tablica[1]);
  5.  
  6. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-Guest-
post 6.07.2005, 14:55:03
Post #3





Goście







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 :/
Go to the top of the page
+Quote Post
nospor
post 6.07.2005, 15:02:25
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-Guest-
post 6.07.2005, 15:29:49
Post #5





Goście







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.
Go to the top of the page
+Quote Post
nospor
post 6.07.2005, 15:31:09
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
-Guest-
post 6.07.2005, 15:52:31
Post #7





Goście







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. ?>

?
Go to the top of the page
+Quote Post
crash
post 6.07.2005, 15:58:53
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


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...


--------------------
Go to the top of the page
+Quote Post
nospor
post 7.07.2005, 07:48:26
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 19.07.2025 - 09:01