Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Jak rozwiązać zagnieżdzanie się kodów PHP?
Forum PHP.pl > Forum > PHP
xajart
Witam mam taką sytuację:

Używam następujacej składni:

Kod
$content = $wyswietl["contents"]; // jest pobierane z bazy danych (w pliku inkludowanym)


Następnie mam kod strony:

Kod
<?php
echo $content;
?>


Problem pojawia się w tym, że raz w BD mam zwykły tekst - który chce wyświetlić na stronie, innym razem mam wrzucodny kod który chce by się wykonał (czyli kod php). niestety jak użyję znaczników w bazie danych w stylu
Kod
<?php echo 'wyswietl'; ?>
to w efekcie wyświetli coś takiego: 
Kod
wyswietl'; ?>
z racji że kody są zagnieżdzone w sobie. Mam pytanko jak to rozwiązać?
djstrong
Nie wiem za bardzo o co chodzi, ale do wykonywania kodu służy funkcja eval()
xajart
Chodzi o to że w Bazie Danych w wierszach poszczególnych mam wpisy:


- tekst mieszany z html
- tekst mieszany z html + javascript
- tekst mieszany z html + php.

używam funkcji do pobierania odpowiedniego wiersza z tabeli, a następnie używam w kodzie wyświetlenie tego czyli:


Kod
<?php
echo $content;
?>


w zmiennej $content - w ten sposób tekst wymieszany z html czy javascript wykonuje bez problemu, niestety kodu php nie wykonuje bo wydaje mi się że wynika to z takiej kwesti :

Kod
<?php
echo "<?php echo $k; ?>";
?php


No i kwestia w tym że ja nie chce wyświetlić tego php jako kodu tylko chce by mi się wykonał na stronie w tle. I nie mam pojęcia jak to zapisać. Bo ocecnie w takiej formie jak jest to pomija mi pierwszy znacznik php a potem wyświetla wszystko od echo do końca ze wszystkimi znacznikami nie podstawiajac danych pod zmienne.

No i nie wiem jak to rozwiażać by ten kod się wykonał, czasami z racji tego że kod php może być zmieszany z html i tekstem w zmiennej $content - może znajdować się taki zapis:

Kod
Tutaj znajduje się dowolny tekst,
<?php
$k='kolejna cześć po przecinku';
echo $k;
?>


Efektem chce by było wyświetlenie na stronie "Tutaj znajduje się dowolny tekst, kolejna cześć po przecinku".
Bo obecnie wyświetla mi coś takiego na stronie:
Kod
Tutaj znajduje się dowolny tekst, '.$k; ?>
megawebmaster
Jedyne rozwiązanie jakie widzę, to zapisywanie w bazie
  1. <?php
  2. echo 'Tekst'; eval('kod php');
  3. ?>
erix
Cytat
z racji że kody są zagnieżdzone w sobie. Mam pytanko jak to rozwiązać?
  1. Przy pomocy preg_match" title="Zobacz w manualu PHP" target="_manual wyciągasz kod PHP
  2. rozpoczynasz buforowanie ob_start" title="Zobacz w manualu PHP" target="_manual
  3. eval" title="Zobacz w manualu PHP" target="_manual z wyciągniętym kodem
  4. pobierasz zawartość bufora i wstawiasz w odpowiednie miejsce w kodzie źródłowym przez preg_replace" title="Zobacz w manualu PHP" target="_manual
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.