22

.php ファイルの内容を他のページの変数に取得したい。

私は2つのファイルを持っていmyfile1.phpますmyfile2.php.

myfile2.php

<?PHP
    $myvar="prashant"; // 
    echo $myvar;
?>

myfile1.php の変数で myfile2.php によってエコーされた値を取得したいのですが、次の方法を試しましたが、php タグ () を含むすべてのコンテンツも取得しています。

<?PHP
    $root_var .= file_get_contents($_SERVER['DOCUMENT_ROOT']."/myfile2.php", true);
?>

ある PHP ファイルから返されたコンテンツを別の PHP ファイルで定義された変数に取得する方法を教えてください。

ありがとう

4

9 に答える 9

37

次の 2 つのことを区別する必要があります。

  • echoインクルード ファイルの出力 ( 、 、...)をキャプチャし、printその出力を変数 (文字列) で使用しますか?
  • インクルードされたファイルから特定の値を返し、それらをホストスクリプトの変数として使用しますか?

インクルード ファイル内のローカル変数は、常にホストスクリプトの現在のスコープに移動されます。これは注意が必要です。これらすべての機能を 1 つに組み合わせることができます。

include.php

$hello = "Hello";
echo "Hello World";
return "World";

host.php

ob_start();
$return = include 'include.php'; // (string)"World"
$output = ob_get_clean(); // (string)"Hello World"
// $hello has been moved to the current scope
echo $hello . ' ' . $return; // echos "Hello World"

-return機能は、特に構成ファイルを使用する場合に便利です。

config.php

return array(
    'host' => 'localhost',
     ....
);

app.php

$config = include 'config.php'; // $config is an array

編集

出力バッファーを使用した場合のパフォーマンスの低下に関する質問に答えるために、簡単なテストを行いました。の 1,000,000 回の反復とob_start()それに対応する$o = ob_get_clean()処理は、私の Windows マシンで約 7.5 秒かかります (おそらく、PHP にとって最適な環境ではありません)。パフォーマンスへの影響は非常に小さいと考えるべきだと思います...

于 2009-05-12T08:41:11.850 に答える
19

インクルードされたページに含まれるコンテンツのみが必要な場合は、echo()出力バッファリングの使用を検討できます。

ob_start();
include 'myfile2.php';
$echoed_content = ob_get_clean(); // gets content, discards buffer

http://php.net/ob_startを参照してください

于 2009-05-12T06:26:49.743 に答える
13

私はいつも関数を避けようとしob_ます。代わりに、次を使用します。

<?php
$file = file_get_contents('/path/to/file.php');
$content = eval("?>$file");
echo $content;
?>
于 2015-05-03T13:08:36.107 に答える
5

「実際には、値を直接返すことができる戻り値の型のメソッドがあるかどうかを調べていました」-あなたは自分の質問に答えました。

http://sg.php.net/manual/en/function.include.phpの例 #5を参照してください。

file1.php:

<? return 'somevalue'; ?>

file2.php:

<?

$file1 = include 'file1.php';
echo $file1; // This outputs 'somevalue'.

?>
于 2009-05-12T08:39:19.730 に答える
5

これを行うには、 includeディレクティブを使用できます。

ファイル 2:

<?php
    $myvar="prashant";
?>

ファイル 1:

<?php 

include('myfile2.php');
echo $myvar;

?>
于 2009-05-12T06:18:09.273 に答える
0

サイト全体で使用したい場合

<?php
$URL = 'http://www.example.com/';
$homepage = file_get_contents($URL);
echo $homepage;
?>
于 2009-12-07T10:46:51.917 に答える
0

このコードを試してください

myfile1.php

<?php
    echo file_get_contents("http://domainname/myfile2.php");
?>

myfile2.php

<?PHP
    $myvar="prashant";
    echo $myvar;
?>
于 2013-05-10T12:55:40.470 に答える