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?
file_get_contents(), en let vooral even op de opmerkingen betreffende URL's.
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.
Werkt dat ook met de url parameters? (Zo te zien niet...)
[ Voor 23% gewijzigd door Verwijderd op 17-03-2006 16:21 ]
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(); ?> |
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 ]
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.
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