PHP 파일을 변수에 어떻게로드합니까?


98

PHP 파일을 변수에로드해야합니다. 처럼include();

다음과 같은 간단한 HTML 파일을로드했습니다.

$Vdata = file_get_contents("textfile.txt");

하지만 이제 PHP 파일을로드해야합니다.

답변:


116

다음을 사용하는 경우 PHP의해 생성 된 콘텐츠 를 얻고 싶다고 가정합니다 .

$Vdata = file_get_contents('http://YOUR_HOST/YOUR/FILE.php');

그렇지 않으면 PHP 파일소스 코드 를 얻으려면 .txt 파일과 동일합니다.

$Vdata = file_get_contents('path/to/YOUR/FILE.php');

6
http를 사용하지 않고 "PHP에 의해 생성 된 내용"을 얻고 경로를 직접 사용하려면 어떻게해야합니까?
Osa

4
@Osa는 : 필요에 따라, 당신은 아마 사용할 수있는 eval()경우 또는 더 복잡한 코드 당신이있는 거 거래 : github.com/nikic/PHP-Parser .
Alix Axel 2012 년

2
단지에 대한 PHP 파서를 구현하는 거대한 잔인한 것 같아
데이비드 곡식 가루

1
이것이 POST 또는 GET을 전달하는 방법을 알지 못합니다. 외부 PHP 파일이 현재 컨텍스트에서 처리되기 때문에 neobie의 대답이 더 정확하고 적절할 것이라고 생각합니다.
ADTC

위의 예를 사용하면 get_template_directory_uri ()를 사용하고 파일 경로에 연결할 수 있습니다. 이것은 직접 경로를 사용하는 문제를 해결할 것입니다. $Vdata = file_get_contents(get_template_directory_uri() . '/path/to/file/in/theme.text');
Ian Bruce

124
ob_start();
include "yourfile.php";
$myvar = ob_get_clean();

ob_get_clean ()


1
작동합니다! 하지만 포함하려고 할 때마다 yourfile.php? id = 3 작동하지 않습니다. 어떤 제안?
tvgemert

1
http를 더 이상 사용하지 않기 때문에이 경우 $ _GET을 통해 값을 전달해야합니다.
Francesco Belladonna 2011

이미지는 어떻습니까?
kta

1
팁 : PHP 4.3.0부터 마지막 ​​두 줄을 단축 할 수 있습니다 $myvar = ob_get_clean();( ob_get_clean 문서 참조 )
ADTC

완전한! 감사합니다.
lowtechsun

7

eyze가 제안한 것처럼 http : //를 사용 하는 경우 PHP 스크립트의 출력 만 읽을 수 있습니다. 실행중인 스크립트와 동일한 서버에있는 경우에만 PHP 스크립트 자체를 읽을 수 있습니다. 그런 다음 다음과 같은 것을 사용할 수 있습니다.

$Vdata = file_get_contents('/path/to/your/file.php");

안녕하세요 이것은 정적 html 만 가져옵니다. 이 예를 참조하십시오. 이것이 우리가로드 할 파일이라면; ///////////////// <? php echo ( "text1"); ?> Text2 /////////////// 이것은 내가 얻은 출력입니다. //////////////////// Text2 ///////////////////
Kombuwa

@Kombuwa, 명확하게 설명 할 공간이 더 많은 원래 질문에 대한 편집에서 답변을 명확히 해주시겠습니까? 감사합니다 =)
David는 Monica를 복원한다고 말합니다.

7

웹 서버를 통해 실행하지 않고 파일을로드하려면 다음이 작동합니다.

$string = eval(file_get_contents("file.php"));

그러면 파일 내용이로드됩니다. PHP 파일은 평가 를 위해 <?php?>태그 로 완전히 구성 eval되어야합니다.


나는이 방법을 좋아한다. 내 파일이 eval을 평가하기 위해 <? php 및?> 태그로 완전히 형성되지 않았다는 점만 있습니다. 다른 방법이 있습니까?
ItsMeDom

4

이론적으로는 fopen을 사용한 다음 stream_get_contents를 사용할 수 있습니다.

$stream = fopen("file.php","r");
$string = stream_get_contents($stream);
fclose($stream);

전체 파일을 $ string으로 읽어야하며 평가해서는 안됩니다. 나는 당신이 로컬 경로를 지정할 때 file_get_contents가 작동하지 않았다는 것에 놀랐습니다 ....


3

또는 출력 버퍼링을 시작하고 포함 / 요구를 수행 한 다음 버퍼링을 중지 할 수 있습니다. ob_get_contents ()를 사용하면 다른 PHP 파일에서 출력 한 내용을 변수로 가져올 수 있습니다.


3

파일에 다음과 같은 return 문이있는 경우 :

<?php return array(
  'AF' => 'Afeganistão',
  'ZA' => 'África do Sul',
  ...
  'ZW' => 'Zimbabué'
);

이것을 다음과 같은 변수로 가져올 수 있습니다.

$data = include $filePath;

1
plus1 감사합니다, 이것이 제가 찾던 것입니다
whitesiroi

1

서버에서 allow_url_fopen 이 꺼져 있으면 file_get_contents ()가 작동하지 않습니다 . 대부분의 공유 웹 호스트는 보안 위험으로 인해 기본적으로 꺼져 있습니다. 또한 PHP6 에서는 allow_url_fopen 옵션이 더 이상 존재하지 않으며 모든 기능이 영구적으로 꺼져있는 것처럼 작동합니다. 따라서 이것은 사용하기에 매우 나쁜 방법입니다.

http를 통해 파일에 액세스하는 경우 사용하는 가장 좋은 옵션은 cURL입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.