php包括打印'1'

时间:2012-07-27 21:53:09

标签: php include

  

可能重复:
  php include prints 1

$html = '<div class="subscribe_user"><span id="question1"><a href="#" id="subscribe_link" data-category="'.$category.'">
                Subscribe to comments made on '.$category.'</a></span></div>' . include(SUBSCRIBE_USER_BASE_DIR . '/includes/av_subscribe_form.php');

这个包含文件是带有一些PHP变量的HTML表单。

我通过插件返回$ html:

return $html;

但我无法摆脱输出附加的'1'。当然这意味着输入文件是成功的,但我该如何解决这个问题?

6 个答案:

答案 0 :(得分:5)

由于您可能希望PHP处理并将输出存储在变量中,因此可以实现这一目的:

ob_start();
include(SUBSCRIBE_USER_BASE_DIR . '/includes/av_subscribe_form.php');
$include = ob_get_clean();

$html = '<div class="subscribe_user"><span id="question1"><a href="#" id="subscribe_link" data-category="'.$category.'">
                    Subscribe to comments made on '.$category.'</a></span></div>' . $include;

答案 1 :(得分:3)

好的,将includereturn string结合使用至少是一种非常不寻常的方法。

首先想象一下这种情况:

return.php:

$html = 'blah blah blah';
return $html;

test.php的:

$html = 'foo';
$html .= include( 'return.php') . 'bar';

考虑一下;)包含的脚本应该覆盖全局变量。当你这样做时,你必须非常小心不要覆盖任何东西。

我强烈建议你宁愿使用函数,类,插件(这么多选项)而不是使用return $string,但只是先尝试​​重命名变量。

你确定你使用的是return而不是echo(在表单脚本中)吗?使用echo只使用普通html是相同的,您必须使用return才能使用它,请查看Example #5 include and the return statement

对您而言,file_get_contents('form')可能是正确的解决方案。

根据您的意见:

如果您有以下文件:

<强> form.php的:

<form><blah blah blah></form>

这相当于:

<?php
echo '<form><blah blah blah></form>';
return 1;

如果你做到了:

<?php
$html = '<form><blah blah blah></form>';

最后还会隐含return 1

答案 2 :(得分:1)

修改/includes/av_subscribe_form.phpreturn其内容。然后它将返回您想要的而不是1以获得成功。

答案 3 :(得分:0)

你应该这样做(如果你的include返回一些东西,否则,只包括,不要追加):

$html = '...';
$return = include(SUBSCRIBE_USER_BASE_DIR . '/includes/av_subscribe_form.php');
$html .= $return;

这也在PHP documentation中说明(参见处理退货)。

答案 4 :(得分:0)

您正在将include的结果连接到字符串$html

你可以这样做:

$var = (include 'file.php');
$html = '<div class="subscribe_user"><span id="question1"><a href="#" id="subscribe_link" data-category="'.$category.'">
            Subscribe to comments made on '.$category.'</a></span></div>'. $var;

您无法为变量分配include,include();的函数版本的值。请参阅example 4

答案 5 :(得分:0)

如果成功包含,则返回1,但理论上它应该返回案例中的内容而不是1.检查页面是否包括: http://php.net/manual/en/function.include.php

那里有实际内容吗?或者你只得到一个“1”?

你也可以这样做:

ob_start();
include("my_file.html");
$content = ob_get_contents();
echo $output; //prints the html content

检查包含文件中是否有任何内容