可能重复:
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'。当然这意味着输入文件是成功的,但我该如何解决这个问题?
答案 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)
好的,将include
与return string
结合使用至少是一种非常不寻常的方法。
首先想象一下这种情况:
$html = 'blah blah blah';
return $html;
$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.php
和return
其内容。然后它将返回您想要的而不是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
检查包含文件中是否有任何内容