2010-11-22 13 views
6

Witaj, czy istnieje sposób pobrania zawartości pliku php podczas przetwarzania kodu php w nim? Potrzebuję dołączyć kod do innej strony, ale muszę wydrukować zawartość w określonej pozycji.file_get_contents i kod php

Jeśli użyję, to kod zostanie wydrukowany przed tagiem html, oczywiście dlatego, że jest przetwarzany przed stroną, ale jeśli użyję file_get_contents, zawartość zostanie pobrana na stronie, ale jeśli mam jakieś tagi php, dostanę je też jako zwykły tekst.

Dziękuję.

EDYCJA: Przepraszam, wydaje mi się, że byłem pijany podczas pisania. Poprawiłem.

Mam silnik, który przetwarza zawartość strony, umieszcza je w zmiennej, a następnie drukuje je w określonej pozycji na stronie html. W silniku muszę "osadzić" kod innych "statycznych" stron, które mogą zawierać tagi php. Jeśli użyję file_get_contents, otrzymam treść jako zwykły tekst (z tagami php nie parsowanymi), jeśli użyję include, to po prostu nie zadziała, ponieważ nie jest dla niego funkcją. Potrzebuję więc osadzenia kodu PROCESSED w silniku (jako gotowego do wydrukowania HTML).

+3

Czy możesz wyjaśnić, co dokładnie chcesz i dlaczego 'include()' użyciu ścieżki systemu plików nie będzie pracować dla Ciebie? Nie rozumiem. –

+0

Czy można powtórzyć? Naprawdę nie rozumiem, o czym mówisz. – robbrit

+0

Dzięki za wyjaśnienia. Poprawnie założyłem w swojej odpowiedzi. – ceejayoz

Odpowiedz

22

Można użyć pliku output buffer, aby dołączyć plik PHP, ale zapisać wynik w celu późniejszego wykorzystania zamiast natychmiastowego drukowania do przeglądarki.

ob_start(); 
include('path/to/file.php'); 
$output = ob_get_contents(); 
ob_end_clean(); 

// now do something with $output 
+1

Nie jestem pewien, czy to, czego potrzebuje, jak on * wydaje się * chcieć kodu źródłowego PHP ... Nie jest jasne * czego * potrzebuje –

+0

Mówi: "jeśli użyję file_get_contents, zawartość zostanie pobrana, ale jeśli mam jakieś tagi php Postaram się, żeby były one jak zwykły tekst ", co oznacza, że ​​właśnie to próbuje. – ceejayoz

+0

Czytam tę część inaczej, ale myślę, że masz rację –

-1

Twoje pytanie nie jest w 100% jasne, ale wygląda na to, chcesz dołączyć do zdalnego źródła php, można użyć include („http://domain.com/path/to/php.phps”); zamiast pliku file_get_contents.

Powiedziałeś, że potrzebujesz tylko części kodu zdalnego, jeśli to możliwe, możesz użyć pliku file_get_contents, pobrać tę część kodu z substr lub reg exp save na lokalnym pliku i dołączyć lub zrobić eval.

Żadne z rozwiązań nie jest bezpieczne ani zalecane, nie należy nigdy dołączać plików zdalnych do bezpośredniej oceny kodu.

-1

Jeśli rozumiem poprawnie; próbujesz załadować plik php, aby przeczytać jego zawartość i wykonać go w tym samym czasie.

tj: include('/foo/bar') i file_get_contents('/foo/bar')

Poniższa funkcja działa zarówno i zwraca zawartość pliku przy założeniu, że istnieje.

function load_and_process($path) { 
    if(file_exists($path) { 
     include($path); 
     return file_get_contents($path); 
    } 
    return false; 
} 

i nazwać tak:

if($file_contents = load_and_process('/foo/bar')) { 
    echo "Loaded $file_contents from /foo/bar"; 
}