0

Web ページで検索スクリプトを実行しており、検索機能を拡張しています。現在、特定の動的ユーザー フィールドを検索します。ここで、最初の検索で結果が得られなかった場合に、2 次検索を実行したいと考えています。

誰かが「Health」を検索すると、検索 URL の出力は次のようになります。

" *.com/ .php?do=getall& study =health"

結果がない場合は、以下が実行されます。

    if ( preg_match( "~/(.*?)$~msi", $_SERVER[ "REQUEST_URI" ], $vv ))
    {
        $string = strstr( $vv[1], 'health=');
        $n_string = explode("=",$string);
        $url = 'http://www.****.com/***.php?do=getall&enjoys=' . $_GET[$n_string[1]];
        ob_clean();
        header('Location:' . $url);
    }

URL は別の検索フィールドにリダイレクトされます。ob_clean() またはいくつかのバリアントを含めないと、「ヘッダーは既に送信されました」というエラーが発生します。

問題は、ob_clean() を実行した後、$n_string 内の値が失われることです。

助けてくれてありがとう!

- - 編集 - -

回答ありがとうございます。コード内にあったエラーの解決策を見つけました。$url = 'http://www. * .com/ .php?do=getall&enjoys=' . $_GET[$n_string[1]];

になるはずだった

        $url = 'http://www.****.com/***.php?do=getall&enjoys=' . $n_string[1];

あなたの回答は役に立ちましたが、ob_clean() を使用する方法をクリーンアップすることができました。

4

3 に答える 3

0

まず、 ob_start()を呼び出して、出力バッファリングを開始する必要があります。含める前に。

以下のリンクを参照してください ob_cleanはヘッダーファイルの前に出力をクリーンアップしませんか?

于 2012-08-24T07:20:29.313 に答える
0

ob_clean() の代わりに ob_end_clean() を試してください。ob_clean() 関数は、一番上の出力バッファの内容をクリアするだけで、スイッチをオフにしません。

于 2012-08-24T07:15:36.467 に答える
0

文字列を設定する前に、最初に ob_clean() を実行しないのはなぜですか?

于 2012-08-24T07:17:42.650 に答える