2

可能重复:
php包含打印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”。当然这意味着输入文件是成功的,但是我该如何解决这个问题呢?

4

6 回答 6

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;
于 2012-07-27T21:55:51.987 回答
3

好的,include结合使用return string至少感觉是一种非常不寻常的方式来做到这一点。

首先想象一下这种情况:

返回.php:

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

测试.php:

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

想想看;)您包含的脚本应该覆盖全局变量。执行此操作时,您必须非常小心不要覆盖任何内容。

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

你确定你使用的是 return 而不是 echo (在表单脚本中)?仅使用普通的 html 与 using 相同echo,您必须使用return才能像那样使用它,看看Example #5 include 和 return 语句

可能file_get_contents('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的。

于 2012-07-27T22:03:46.843 回答
1

编辑/includes/av_subscribe_form.php及其return内容。然后它会返回你想要的而不是1成功。

于 2012-07-27T21:57:29.730 回答
0

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

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

这在PHP 文档中也有说明(请参阅处理返回)。

于 2012-07-27T21:56:50.070 回答
0

您正在将 include 的结果连接到您的 string$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();。参见示例 4

于 2012-07-27T21:59:11.930 回答
0

如果成功包含,include 返回 1,但理论上它应该在 case 中返回内容而不是 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

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

于 2012-07-27T22:01:26.810 回答