我的网页上运行了一个搜索脚本,正在扩展搜索功能。目前,它搜索特定的动态用户字段。现在,如果第一次搜索没有结果,我想进行二次搜索。
如果有人搜索“健康”,则搜索网址输出为:
“的 * 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);
}
该网址将被重定向到另一个搜索字段。 如果我不包含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()的方法,但您的回复很有帮助。
答案 0 :(得分:0)
尝试ob_end_clean()而不是ob_clean()。 ob_clean()函数只清除最顶层输出缓冲区的内容,但不关闭它。
答案 1 :(得分:0)
为什么不先设置ob_clean() - 在设置字符串之前?
答案 2 :(得分:0)
您应首先通过在加入之前拨打 ob_start(); 来启动输出缓冲。
参考以下链接 ob_clean doesn't clean the output before the header file?