将PHP脚本的执行输出分配给变量?

时间:2011-05-03 19:14:43

标签: php variables

我创建了一个网站,我可能没有像我应该那样做,但我当时是PHP新手。因此,为了省去尝试重新编写脚本以在我的网站上显示照片的许多挫折,我需要运行一个* .php文件,并在输入名为“$ html”的var时输出。我知道这可能听起来很奇怪,但这就是我的需要。

从index.php里面,我包括photos.php;在photos.php中,我需要使用名为photos_page.php的脚本的输出声明$ html;

例如: $html = parse_my_script("../photos_page.php");

谢谢

10 个答案:

答案 0 :(得分:10)

<强>答案: 为此,您可以使用PHP的Output buffering/control。这是一些获取脚本输出并返回它的简单函数:

<强>代码:

使用的东西: ob_start() ob_get_clean() is_readable()

function getScriptOutput($path, $print = FALSE)
{
    ob_start();

    if( is_readable($path) && $path )
    {
        include $path;
    }
    else
    {
        return FALSE;
    }

    if( $print == FALSE )
        return ob_get_clean();
    else
        echo ob_get_clean();
}

<强>用法:

$path = '../photos_page.php';
$html = getScriptOutput($path);

if( $html === FALSE)
{
    # Action when fails
}
else
{
    echo $html;
}

答案 1 :(得分:2)

您需要尝试file_get_contents

$html = file_get_contents("http://www.yourwebsite.com/pages/photos_page.php");

//this will not work since it won't run through web server
//$html = file_get_contents("../photos_page.php");

答案 2 :(得分:2)

这应该可以解决问题:

ob_start();
require('../photos_page.php');
$html = ob_get_contents();
ob_end_clean();

答案 3 :(得分:1)

您应该使用file_get_contents("http://yourdomain.com/path/to/photos_page.php")


但是如果我是你,我会这样做:

<强> photos_page.php

<?php

function get_photos_html() {
    $html = // generate html
    return $html;
}

?>

<强> main_file.php

<?php

include('../photos_page.php');

$html = get_photos_html();

?>

答案 4 :(得分:1)

您可以使用output buffering。这会将通常发送到客户端的所有输出放入缓冲区,然后您可以检索该缓冲区:

ob_start();
include '../photos_page.php';
$html = ob_get_contents();
ob_end_clean();

如果您愿意,可以将此功能放入一个函数中,使其按照您的描述工作:

function parse_my_script($path)
{
    ob_start();
    include $path;
    $html = ob_get_contents();
    ob_end_clean();
    return $html;
}

当然,这假设您所包含的文件不需要使用全局变量。

有关更多信息,请查看所有输出控制功能:

http://www.php.net/manual/en/ref.outcontrol.php

答案 5 :(得分:1)

输出缓冲会将输出文本保存在内存中,而不是实际将其输出到响应中。

首先,通过调用ob_start()函数创建一个缓冲区。完成将输出存储在缓冲区中后,调用ob_get_clean()以返回缓冲区内容并清除缓冲区。

ob_start();
include "../photos_page.php";
$html = ob_get_clean();

答案 6 :(得分:0)

我猜你发布的是伪代码。

您之前编写的代码不能再使用,但不能再使用。我会重写你需要的部分并创建一些函数,甚至可以用来获得你需要的任何类。

答案 7 :(得分:0)

您想要查看该方法 ob_start()和ob_flush(),ob_get_contents()等。 http://us.php.net/manual/en/ref.outcontrol.php

这将允许您将PHP文件中的数据输出到特定变量中。

你当然应该考虑改写:)

基本上是这样的:

ob_start();
include('yourfile.php');
$html = ob_get_contents();
ob_end_clean();

答案 8 :(得分:0)

如果您的photos_page.php的工作方式如下:

<?php
    // very basic code
    $img = "/path/to/my/image.jpg";
    echo '<img src="' . $img . '">' . PHP_EOL;
?>

然后你可以使用:

$html = file_get_contents('http://mysite.com/photos_page.php');

但实际上,你应该重新编写代码,这样你就不必这样做了。

答案 9 :(得分:0)

如果$ path返回一个值,您也可以执行

$path = '/path/to/your/script.php';
$html = return include $path;
相关问题