[PHP] Output van een PHP file in een variabele

Pagina: 1
Acties:
  • 160 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik krijg het niet voor elkaar om de output van een bepaalde PHP file in een variabele te krijgen. Hierbij gaat het om een lokale PHP file met url-variabelen (bijv. test.php?test=bla). Is er een manier om de output van deze PHP file in een variabele te krijgen?

Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

file_get_contents(), en let vooral even op de opmerkingen betreffende URL's.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dus ik zal altijd de volledige url moeten gebruiken?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Wel als je file_get_contents gebruikt. Je kan ook output buffering gebruiken:
PHP:
1
2
3
4
ob_start();
include('bestand.php');
$contents = ob_get_contents();
ob_end_clean();

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Werkt dat ook met de url parameters? (Zo te zien niet...)

[ Voor 23% gewijzigd door Verwijderd op 17-03-2006 16:21 ]


Acties:
  • 0 Henk 'm!

  • kunnen
  • Registratie: Februari 2004
  • Niet online
Mischien:

PHP:
1
$output = system("php bestand.php");


of een variant hierop?

Acties:
  • 0 Henk 'm!

Verwijderd

Zoek je dit soms: http://nl2.php.net/manual/en/ref.outcontrol.php

PHP:
1
2
3
4
5
6
7
<?php
ob_start();

include('test.php');

$output = ob_get_clean();
?>

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zoiets ja, maar dan dat het includen van test.php?test=bla ook werkt...

Acties:
  • 0 Henk 'm!

Verwijderd

Zet die vars zelf in de $_GET. Met http://php.net/parse_url kan je automatisch een query string parsen naar array.

[ Voor 9% gewijzigd door Verwijderd op 17-03-2006 16:43 . Reden: markup code sux ]


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Overigens zou ik het dan wel in een functietje stoppen. Direct includen kan wel eens wat nare effecten hebben in verband met de scope van variabelen. Al beide scripts een variabele $var1 zouden gebruiken gaat er gegarandeerd wat mis omdat na het includen de variabele $var1 in het script dat de boel aanroept overschreven is met de waarde uit de include.

Een generieke functie zou er ongeveer zo uit zien.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* Gets the output of a PHP script, emulates a request by setting the _GET,
* _POST, _COOKIE and _REQUEST superglobals to specified values. The current
* superglobals are backed up in a var called __TEMP_REQUEST__. The script
* will break whenever the included script uses this varname
*/

function getContentsWithGPC($file, $getParams = array(), $postParams = array(), $cookieParams = array()) {

    //backup request params for the running script
    $__TEMP_REQUEST__ = array (
        '_GET'      => $_GET,
        '_POST'     => $_POST,
        '_COOKIE'   => $_COOKIE,
        '_REQUEST'  => $_REQUEST);


    //set the request params for the included script
    $_GET = $getParams;
    $_POST = $postParams;
    $_COOKIE = $cookieParams;

    $_REQUEST = array_merge($_GET, $_POST, $_COOKIE);

    //fetch the output of the script
    ob_start();
    include($file);
    $output = ob_get_clean();

    //restore the request params
    extract($__TEMP_REQUEST__);

    //return output
    return $output;
}

Regeren is vooruitschuiven

Pagina: 1