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

さて、 feelsincludeと組み合わせて使用​​するreturn stringことは、これを行うための少なくとも非常に珍しい方法です。

まず、次の状況を想像してください。

return.php:

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

test.php:

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

考えてみてください;) 含まれているスクリプトはグローバル変数を上書きする必要があります。これを行うときは、何も上書きしないように十分に注意する必要があります。

を使用する代わりに、関数、クラス、プラグイン (非常に多くのオプション) を使用することを強くお勧めしますが、return $string最初に変数の名前を変更してみてください。

そして、return を使用していて、echo ではなく (フォーム スクリプト内で) 使用していると確信していますか? 単純な html を使用するのは を使用するのと同じです。そのように使用できるようにするには、 を使用する必要があります。echo#5 の include と return ステートメントを見てください。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.phpreturnその内容。次に1、成功ではなく、必要なものを返します。

于 2012-07-27T21:57:29.730 に答える
0

include は、正常にインクルードされた場合に 1 を返しますが、理論的には 1 ではなく場合に応じてコンテンツを返す必要があります

実際のコンテンツはありますか?それとも「1」しか得られませんか?

また、次のことができます。

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

インクルードファイルに何かが書き出されているかどうかを確認するには

于 2012-07-27T22:01:26.810 に答える
0

次のようにする必要があります(インクルードが何かを返す場合、そうでない場合は、単にインクルードし、追加しないでください):

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

これは、PHP のドキュメントにも記載されています (返品の処理を参照してください)。

于 2012-07-27T21:56:50.070 に答える
0

インクルードの結果を 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 に答える