PHP:可以防止功能回显到屏幕?

时间:2011-12-30 04:38:04

标签: php function

好的,我知道标题有点令人困惑,因为我想不出一个解释它的好方法。有这个我无法访问的功能,它看起来像这样:

<?php function myFunction() {
?> '<img src="one.jpg" />';
<?php } ?>

好的,所以每次调用该函数时,它都会回显img标签。但是如果我想在它回到屏幕之前操纵img标签呢?有可能吗?

我想首先将它分配给变量,操纵它然后我会回应它。像这样:

$image_src = myFunction();
$image_src = preg_replace('/s.*"/', $image_src);
echo $image_src;

这样的事可能吗?

2 个答案:

答案 0 :(得分:11)

使用output buffering

ob_start();
myFunction();
$output = ob_get_clean();

之后,$ output将包含在函数内部回显的html。

答案 1 :(得分:1)

我是php的新手,我做的第一件事是创建一个通用函数来回显一行到html:

function html_line ( $string ) // echo line to browser
{
  echo PHP_EOL . $string . PHP_EOL;
}

然后我为添加html标签的简单段落和图像创建了函数,例如:

function html_pp ( $string ) // echo paragraph to browser
{
  html_line ( '<p>' . $string . '</p>' );
}

在调用这些内容之前,可以使用其他函数和变量以任何方式操作内容:

function html_page ( $str_title, $str_content ) // simple page with title and body
{
  html_line ( '<html>' );
  html_line ( '<head>' );
  html_line ( '<title>' . $str_title . '</title>' );
  html_line ( '</head>' );
  html_line ( '<body>' );
  html_pp ( $str_content );
  html_line ( '</body>' );
  html_line ( '</html>' );
}

function html_test () // set some variables and create a test page
{
  $test_title = 'PHP Test';
  $test_msg = 'Hello World!';
  html_page ( $test_title, $test_msg );
}

我不知道这是否能回答你的问题,但它对我来说效果很好,可能是一个很好的起点。如果您决定将函数分离到不同的文件,就像我一样,只需确保包含正确的包含调用,并且函数将具有来自调用者的全局范围。