Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy jest możliwe includowanie stringa?
Forum PHP.pl > Forum > PHP
LamaMASTER
Witam,
Przykładowo jest sobie plik.php i w nim:
Kod
<?
$kupa = 'kupę';
?>
Jaś sobie napierdział i zrobił <?=$kupa?>. Co teraz będzie z biednym Jasiem?
<? include('stopka.php'); ?>

Dodając w index.php
  1. <?
  2. include('plik.php');
  3. ?>

jak każdy wie wynik będzie taki:

Jaś sobie napierdział i zrobił kupę. Co teraz będzie z biednym Jasiem?
[zawartość pliku stopka.php]

Teraz mam taki problem, przypuśćmy mam:
  1. $string = '<?
  2. $kupa = "kupę";
  3. ?>
  4. Jaś sobie napierdział i zrobił <?=$kupa?>. Co teraz będzie z biednym Jasiem?
  5. <? include("stopka.php"); ?>';

Co teraz zrobić ze zmienną $string, żeby efekt był taki sam jak przy wczytaniu pliku?
Jest gdzieś może kod źródłowy funkcji include żeby podpatrzeć jak ona to robi?
matrach
eval()
I popraw te cudzysłowy bo przy evalowaniu wywali błeda
LamaMASTER
Eval znam, ale i tak wywali błęda. Wiesz czemu? Bo co będzie jeżeli $string będzie wyglądać tak:
  1. $string = '<div align="center">Coś tam <?=$kupa?> <? include("plik.php"); ?>';

Eval parsuje tylko czysty kod php, np. jak mam samo eval('echo $kupa');, ale nie razem z tagami, tekstem i tagami php... gdyby to było tak proste to nie pisałbym tego tematu winksmiley.jpg
matrach
Cytat(LamaMASTER @ 2006-05-01 17:08:58)
Eval parsuje tylko czysty kod php, np. jak mam samo eval('echo $kupa');, ale nie razem z tagami, tekstem i tagami php... gdyby to było tak proste to nie pisałbym tego tematu winksmiley.jpg

Wystarczy pomyśleć....
  1. eval('?>'.$string.'<?');


Gdyby tak nie można było zrobić nie pisałbym poprzedniej odpowiedzi.....
LamaMASTER
No i co? Wyskakują nadal parse errory. Uwierz mi - próbowałem takich kombinacji z evalem tysiące. Nawet robiłem pętlę, która używała eval na wszystkim między <? i ?> a resztę pozostawiała bez zmian, ale to nie ma sensu. Popatrz jaki jest wynik tego co podałeś:

  1. <?
  2. eval('?> <div align="center">Coś tam <?=$kupa?> <? include("plik.php"); ?> <?')

i dlaczego tu nie ma być błędów? Pierwszy znak kończy kod php, ale to i tak nie działa w tej funkcji
matrach
To zobacz co ci da to:
  1. <?
  2. $cos = 25;
  3. $evaluj = 'Buhahahaha <b>$cos</b> to <?=$cos?>';
  4. eval ('?>' . $evaluj . '<?');
  5. ?>


A w dodatku ponady przez ciebie kod działa
Jeśli ci to nie działa eval to zmień wersje php
-------------------
I poczytaj komenty do evala
ten i ten poniżej
LamaMASTER
Bardzo bym się cieszył, gdyby to działało, ale ciągle mam:
Parse error: parse error, unexpected ')' in [..] eval()'d code on line numer linii, w której jest ten eval

edit

Heh to był błąd mojego $string co sobie zrobiłem winksmiley.jpg
Dzięki, teraz działa biggrin.gif

Ostatnie pytanie:
Czemu wywala mi parse error jeżeli między pytajnikami stawiam funkcję z nawiasami? Np przy echo nie wywala, ale przy include('plik.php'); już jest byk
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.