Question

Je veux obtenir le contenu d'un fichier .php dans une variable autre page.

J'ai deux fichiers, et myfile1.php myfile2.php.

myfile2.php

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

Maintenant, je veux obtenir la valeur fait écho par la myfile2.php dans une variable myfile1.php, je l'ai essayé la voie follwing, mais sa prise de tout le contenu, y compris balise php () aussi.

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

S'il vous plaît me dire comment je peux obtenir le contenu retourné par un fichier PHP dans une variable définie dans un autre fichier PHP.

Merci

Était-ce utile?

La solution

Vous pouvez utiliser le comprennent directive pour le faire.

Fichier 2:

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

Fichier 1:

<?php 

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

?>

Autres conseils

Vous devez distinguer deux choses:

  • Est-ce que vous voulez capturer la sortie (echo, print, ...) du fichier inclus et utiliser la sortie dans une variable (chaîne)?
  • Est-ce que vous voulez retourner certaines valeurs à partir des fichiers inclus et les utiliser comme une variable dans votre host script?

Les variables locales dans vos fichiers inclus seront toujours déplacés à la portée actuelle de votre host Script - il convient de noter. Vous pouvez combiner toutes ces fonctions en un seul:

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 -. Fonctionnalité est très pratique en particulier lors de l'utilisation des fichiers de configuration

config.php

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

app.php

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

EDIT

Pour répondre à votre question sur la peine de performances lors de l'utilisation des tampons de sortie, je viens de faire quelques tests rapides. 1.000.000 itérations de l'correspondant et ob_start() prendre environ 7,5 $o = ob_get_clean() secondes ma machine Windows (sans doute pas le meilleur environnement pour PHP). Je dirais que l'impact de la performance devrait être considérée comme assez faible ...

Si vous ne voulez que le contenu echo() 'ed par la page incluse, vous pouvez envisager d'utiliser en mémoire tampon de sortie:

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

Voir http://php.net/ob_start

J'essaie toujours d'éviter ob_ Fonctions . , J'utiliser:

<?php
$file = file_get_contents('/path/to/file.php');
$content = eval("?>$file");
echo $content;
?>

« En fait, je viens de regarder c'est-il une méthode de type de retour qui peut directement me donner la valeur » - Vous venez de répondre à votre question

.

Voir http://sg.php.net/manual/en/function .include.php , Exemple # 5

file1.php:

<? return 'somevalue'; ?>

file2.php:

<?

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

?>

Vous pouvez utiliser des tampons de sortie, qui permet de stocker tout ce que vous sortie, et ne l'imprimer à moins que vous dire explicitement, ou ne finissent pas / effacer les tampons d'ici la fin du chemin d'exécution.

// Create an output buffer which will take in everything written to 
// stdout(i.e. everything you `echo`ed or `print`ed)
ob_start()
// Go to the file
require_once 'file.php';
// Get what was in the file
$output = ob_get_clean();

Si vous souhaitez obtenir toute l'utilisation du site par

<?php
$URL = 'http://www.example.com/';
$homepage = file_get_contents($URL);
echo $homepage;
?>

S'il vous plaît essayer ce code

myfile1.php

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

myfile2.php

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

Si vous voulez retourner la sortie du code dans un fichier, tout simplement faire un appel API RESTful lui. De cette façon, vous pouvez utiliser le même fichier de code pour les appels ajax, API REST, ou pour votre code PHP interne.

Il faut cURL à installer, mais pas de tampons de sortie ou ne comprend, à la page exécutée et retournée dans une chaîne.

Je vais vous donner le code que j'écrit. Il fonctionne avec presque tous les REST / serveur web (et fonctionne même avec Equifax):

$return = PostRestApi($url);

ou

$post = array('name' => 'Bob', 'id' => '12345');
$return = PostRestApi($url, $post, false, 6, false);

Voici la fonction:

/**
 * Calls a REST API and returns the result
 *
 * $loginRequest = json_encode(array("Code" => "somecode", "SecretKey" => "somekey"));
 * $result = CallRestApi("https://server.com/api/login", $loginRequest);
 *
 * @param string $url The URL for the request
 * @param array/string $data Input data to send to server; If array, use key/value pairs and if string use urlencode() for text values)
 * @param array $header_array Simple array of strings (i.e. array('Content-Type: application/json');
 * @param int $ssl_type Set preferred TLS/SSL version; Default is TLSv1.2
 * @param boolean $verify_ssl Whether to verify the SSL certificate or not
 * @param boolean $timeout_seconds Timeout in seconds; if zero then never time out
 * @return string Returned results
 */
function PostRestApi($url, $data = false, $header_array = false,
    $ssl_type = 6, $verify_ssl = true, $timeout_seconds = false) {

    // If cURL is not installed...
    if (! function_exists('curl_init')) {

        // Log and show the error
        $error = 'Function ' . __FUNCTION__ . ' Error: cURL is not installed.';
        error_log($error, 0);
        die($error);

    } else {

        // Initialize the cURL session
        $curl = curl_init($url);

        // Set the POST data
        $send = '';
        if ($data !== false) {
            if (is_array($data)) {
                $send = http_build_query($data);
            } else {
                $send = $data;
            }
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
            curl_setopt($curl, CURLOPT_POSTFIELDS, $send);
        }

        // Set the default header information
        $header = array('Content-Length: ' . strlen($send));
        if (is_array($header_array) && count($header_array) > 0) {
            $header = array_merge($header, $header_array);
        }
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

        // Set preferred TLS/SSL version
        curl_setopt($curl, CURLOPT_SSLVERSION, $ssl_type);

        // Verify the server's security certificate?
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, ($verify_ssl) ? 1 : 0);

        // Set the time out in seconds
        curl_setopt($curl, CURLOPT_TIMEOUT, ($timeout_seconds) ? $timeout_seconds : 0);

        // Should cURL return or print out the data? (true = return, false = print)
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

        // Execute the request
        $result = curl_exec($curl);

        // Close cURL resource, and free up system resources
        curl_close($curl);
        unset($curl);

        // Return the results
        return $result;

    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top