ob_clean()之后PHP字符串丢失


PHP String Lost After ob_clean()

我的网页上运行了一个搜索脚本,正在扩展搜索功能。目前,它搜索特定的动态用户字段。现在,如果第一次搜索没有结果,我想执行第二次搜索。

假设有人搜索"健康",则搜索url输出为:

"*.com/.php?do=getall&研究=健康"

如果没有结果,将运行以下程序:

    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()或一些变体,就会出现"Header already sended"错误。

问题是,在运行ob_clean()之后,$n_string中的值将丢失。

谢谢你的帮助!

----编辑----

谢谢大家的回答。我已经找到了代码中错误的解决方案。$url='http://www.*.com/.php?do=getall&享受='$_获取[$n_string[1]];

应该是

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

你的回复很有帮助,尽管我可以清理使用ob_clean()的方法。

请尝试ob_end_clean(),而不是ob_clean()。ob_clean()函数只清除最顶层输出缓冲区的内容,但不关闭它。

为什么不在设置字符串之前先执行ob_clean()?

您应该首先通过调用ob_start()来启动输出缓冲加入之前。

请参阅以下链接ob_clean不';t清除头文件之前的输出?