Autor Zpráva
Waclaw
Profil *
Dobrý večer,
už delší dobu mě trápí problém s načítáním php kódu. Co jsem hledal, tak je tento problém častý, ale řešení jsem nikdy nenašel.
Jde o to, že potřebuji získat kód lokalní stránky, ale už s provedeným php kódem.
Takže př.:
strana.php
Petr má <?$x=3*4; echo $x;?> dětí!

A já potřebuji ve stránce xx dostat už tento provedený kód do proměné.
Zkoušel jsme file_get_contents, ale ten vrací neprovedený kód a přes http je zakázán.
Mohli byste poradit nějaké řešení?..mockrát děkuji
DJ Miky
Profil
Měl by stačit prostý include.
Waclaw
Profil *
DJ Miky
Mohl bys napsat jak? Nechápu, jak to nacpat do té proměné?
vertigo4
Profil
<?
include "adresa/něco.php";
?>
Waclaw
Profil *
vertigo4
?
Kde je ten zapis do proměné?
Ja nepotřebuji poslat na výstup obsah strana.php, nýbrž tento obsah potřebuji nacpat do proměné $xx a s ní dále pracovat.
Alphard
Profil
proměnné se přenáší, jednoduše

include "nejaky_vypocet.php";
$x *= 2; // zde máme $x a násobíme ji
echo $x; // mělo by to vypsat 30


--------------------------
nejaky_vypocet.php:

$x = 1 + 2 + 3 +4 +5;
Waclaw
Profil *
Alphard
Dík za snahu. Ale zkusím ještě jednou ten příklad:

strana.php
Petr má <?$x=3*4; echo $x;?> dětí!

strana2.php
$promena=funkce(strana.php); //zde nevím, jak načíst ten obsah, aby se provedlo php
echo $promena; // vysledek by měl být Petr má 12 dětí!
další práce s $promena...
djlj
Profil
file_get_contents?
Waclaw
Profil *
djlj
Zkoušel jsem file_get_contents, ale ten vrací neprovedený kód a přes http je zakázán.
Waclaw
Profil *
Ještě mě napadlo, že přes file_get_contents dostanu neprovedený kód, který bych prohnal evalem, ale to se také nezdařilo.
vertigo4
Profil
moc tě nechápu... já bych dal :

$promena= include "strana.php"; a je to ne? a pak:

echo $promena;
nightfish
Profil
moc tě nechápu... já bych dal :
$promena= include "strana.php"; a je to ne? a pak:
ne panáčku, takhle to opravdu nefunguje
Waclaw
Profil *
Neříkejte, že nikdo z takových machrů, jako jsou tu, nezná odpověď?
Mastodont
Profil
nightfish
Co podle tebe nefunguje? Vložení obsahu souboru do proměnné přes include? To samozřejmě funguje.
Waclaw
Profil *
Mastodont
Můžeš ukázat příklad?...jelikož include vrací 0 resp 1, podle toho zda se správně provedl.
Waclaw
Profil *
Mastodont
Možná nějak přes return, ale ja nemůžu sahat do těch includovaných souborů.
Mastodont
Profil
Waclaw
Příklad je přímo v manuálu. A ano, je to přes return.
bukaj
Profil
Waclaw
K vyřešení tvého problému mě napadla tato fce:

<?php
/**
* funkce exportuje definované proměnné z předaného souboru do globálního
* kontextu
* @param string název souboru
* @return bool TRUE, pokud byly proměnné exportovány
*/
function exportVarsFromFile($__f)
{
//pokud soubor neexistuje, vrátí FALSE
if(!file_exists($__f))
return FALSE;
//vložení souboru
require $__f;
//definování globálních proměnných
foreach(get_defined_vars() as $__var => $__val)
{
global $$__var;
$$__var = $__val;
}
return TRUE;
}


Jediný problém je s exportem proměnných $__var a $__val.

EDIT: Tak jsem to pochopil špatně...
Potom tedy:
function getPhpFile($file)
{
ob_start();
include $file;
$content = ob_get_clean();
ob_end_clean();
return $content;
}
Casero
Profil
Mastodont
Příklad je přímo v manuálu. A ano, je to přes return.
Waclaw:
Ano, tak to znám. Bohužel, jak jsem psal, nemužu sahat do těch souborů, abych jim přidával return.
Waclaw
Profil *
bukaj
Paráda. Musím říct, že jsi opravdový profik, když na tomto fóru nikdo jiný nezvládl vyřešit tento problém. Fakt respekt.
Waclaw
Profil *
Takže téma zamykám s hotovím řešením (trochu jsem ho upravil, aby byl lně funkční i v již spuštěném bufferování):

function getPhpFile($file) 

{
ob_start();
include $file;
$content = ob_get_contents();
ob_end_clean();
return $content;
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0