2011-09-02 3 views
1

exemple j'ai un template.php de fichier avec:comment obtenir le résultat d'un fichier php dans une chaîne

<table> 
    <tr> 
     <td><?php echo $data['nombre'] ?></td> 
    </tr> 
    <?php foreach($data['values] as $value): ?> 
    <tr> 
     <td><?php echo $value ?> </td>   
    </tr> 
    <?php endforeach; ?> 
</table> 

et j'ai besoin le résultat dans une chaîne $result = get_content_process('template.php',$data); pour une utilisation dans d'autres processus.

echo $result; 
<table> 
    <tr> 
     <td>Juan</td> 
    </tr> 
    <tr> 
     <td>Male</td>   
    </tr> 
    <tr> 
     <td>Brown</td>   
    </tr> 
</table> 
+2

pourrait être utile - http://stackoverflow.com/questions/2832010/what-is-output-buffering – ajreal

+0

Egalement en relation avec: [Modifier une fonction PHP existante pour renvoyer une chaîne] (http://stackoverflow.com/q/8730847/367456) – hakre

Répondre

3
<?php 
ob_start(); 
include 'template.php'; 
$result = ob_get_clean() 
?> 

cela devrait faire, le résultat de $ est la chaîne dont vous avez besoin

+0

Je vais essayer cette solution – rkmax

+0

avec la fonction 'extract()' fonctionne très bien !! – rkmax

+0

si vous avez besoin de savoir, il est appelé tampon de sortie, et il est très pratique lorsque vous devez générer et traiter des données dans le même script – beerwin

0

Vous pouvez utiliser ob_start() faire quelque chose comme ça

<?php 
    ob_start(); 
    $GLOBALS['data'] = ...; 
    include("template.php"); 
    $result = ob_get_clean(); 
    echo $result; 
?> 
1

Pour vous assurer que vous ne vident pas tôt, désactivez le vidage implicite. Cette fonction devrait faire l'affaire:

function get_content_process($template, $data) { 
    ob_implicit_flush(false); 
    include($template); 
    $contents = ob_get_contents(); 
    ob_clean(); 
    ob_implicit_flush(true); 
    return $contents; 
} 
+0

qui est une réponse complète – rkmax

0

solution simple et rapide:

$result = file_get_contents($view); // $view == the address of the file(ie 'some_folder/some_file.php') 
Questions connexes