我的网页上运行了一个搜索脚本,正在扩展搜索功能。目前,它搜索特定的动态用户字段。现在,如果第一次搜索没有结果,我想执行第二次搜索。
假设有人搜索"健康",则搜索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清除头文件之前的输出?