PHP:清除屏幕(或将屏幕设置为空白)
=================== 注意:这不是重复的,因为我已经在上尝试了解决方案,但对我的问题无效 =================== 如何删除以前[浏览器的]回显项-清除屏幕完全设置屏幕空白 例如…:PHP:清除屏幕(或将屏幕设置为空白),php,Php,=================== 注意:这不是重复的,因为我已经在上尝试了解决方案,但对我的问题无效 =================== 如何删除以前[浏览器的]回显项-清除屏幕完全设置屏幕空白 例如…: <?php function test($var) { if ($var === 0) { echo "Hello "; } if ($var === 1) { echo "World"; } if ($var < 0 || $var > 1
<?php
function test($var) {
if ($var === 0) { echo "Hello "; }
if ($var === 1) { echo "World"; }
if ($var < 0 || $var > 1) { [clear screen]; echo "Number is too big";}
}
test(0);
test(1);
test(666);
在HTML方面,我使用的是…content=/>。当页面没有关键字时,这是不清除浏览器的输出:
HTML
因此,屏幕为空白,没有任何错误消息
说:
输出缓冲区是可堆叠的,也就是说,当另一个ob_启动处于活动状态时,您可以调用ob_启动。只需确保您调用ob_end_flush的次数适当。如果多个输出回调函数处于活动状态,则输出将按嵌套顺序依次通过每个输出回调函数进行过滤
说:
输出缓冲区必须由ob_start with PHP_output_HANDLER_CLEANABLE标志启动。否则ob_clean将无法工作
PHP文档
控制是否可以清除由ob_start创建的输出缓冲区
从PHP5.4开始提供
您确定可以启动/刷新/结束输出缓冲区吗?
你检查过你的服务器配置了吗?
您确定没有发生输出缓冲区堆叠吗?是否有无法执行以下操作的原因?在知道要打印/回显的内容之前,不应该进行输出
<?php
$output = "";
function test($var) {
if ($var === 0) { $output = "Hello "; }
if ($var === 1) { $output = "World"; }
if ($var < 0 || $var > 1) { [clear screen]; $output="Number is too big";}
}
Function outputCheck(){
Echo $output;
}
test(0);
test(1);
test(666);
outputCheck();
我不理解您的需要,事实上,您不想清除屏幕,而是想在浏览器中看到错误消息,而不看源代码。这是不可能的,因为你已经打开了标签 请尝试以下操作,而不是退出代码:
exit('<html><head></head><body>Page ' . $pageID . " has no keywords</body></html>");
您必须关闭meta标记和header,然后启动body标记。我尝试了您在说明中提供的示例代码,下面的代码对我有效
<?php
ob_start();
function test($var) {
if ($var === 0) { echo "Hello "; }
if ($var === 1) { echo "World"; }
if ($var < 0 || $var > 1) {
ob_end_clean();
echo "Number is too big";
}
}
test(0);
test(1);
test(666);
更多详情
让我知道它是否对您有效。您无法恢复输出。通常,服务器一次发送每个输出。因此,打印或回音无法反转。但您可以通过使用ob_start启动所有代码来缓冲输出
在代码末尾,您可以使用ob_end_flush将缓冲区发送到客户端
要输出错误详细信息,您可以使用如下自定义函数:
function error($str) {
ob_end_clean();
exit($str);
}
这会帮你的忙的
但是
在发送html之前,将所有信息收集到你的元数据中会更好。这将导致更快地发送到客户端。如果所有信息都已清除,则只需输出图元:
$test1 = test(1);
$test2 = test(2);
if //all my content is okay {
...paste html here...
}
你可以从学校得到一些帮助 按键功能:ob_开始、ob_清洁、ob_结束\u冲洗 请尝试下面的代码
<?php
ob_start();
function test($var) {
if ($var === 0) { echo "Hello "; }
if ($var === 1) { echo "World"; }
if ($var < 0 || $var > 1) {
ob_clean();
echo "Number is too big";
}
}
test(0);
test(1);
test(666);
ob_end_flush();
您使用exit的方式非常糟糕: Exit将完成脚本的执行,我想这不是您期望的行为。因此,当文档没有关键字时,您的代码无法正常工作:
class keywords{
private static function run(){
...pdo code...
...some more code...
if( $sht->rowCount() === 0 ){
...[clear screen goes here]...
exit("Page " . $pageID . " has no keywords");
else...
...more code
}
...more code
}
您必须使用return或其他方法退出运行,但不要结束PHP脚本执行
例如,将此文本保留在关键字标记中:
class keywords{
private static function run(){
...pdo code...
...some more code...
if( $sht->rowCount() === 0 ){
...[clear screen goes here]...
echo "Page " . $pageID . " has no keywords";
return;
else...
...more code
}
...more code
}
不留下任何文本的示例:
class keywords{
private static function run(){
...pdo code...
...some more code...
if( $sht->rowCount() === 0 ){
...[clear screen goes here]...
return "Page " . $pageID . " has no keywords";
else...
...more code
}
...more code
}
该文本可用于警告调用方该问题,但在您的代码中,它将默默地将关键字标记保留为空,并仍让PHP脚本的其余部分运行
致以最良好的祝愿
<?php
ob_start(); //starts the buffer
function test($var) {
if ($var === 0) { echo "Hello "; }
if ($var === 1) { echo "World"; }
if ($var < 0 || $var > 1)
{
ob_get_clean(); //fetches buffer (not used here) and cleans it. It do not stop the buffer from working like ob_end_clean();
echo "Number is too big";
}
}
test(0);
test(1);
test(666);
这通常用于加载自定义插件的cms中。人们倾向于在文件或空格的末尾添加前导回车,然后在第一个空格之前添加回车。。。您应该使用以下选项:
exit(' " /> </head><body> Page '.$pageID.' has no keywords </body></html>');
好的,我会尝试用多种方式面对这个问题。我们可以理解,您的第一个测试脚本:
<?php
function test($var) {
if ($var === 0) {
echo "Hello ";
}
if ($var === 1) {
echo "World";
}
if ($var < 0 || $var > 1) {
echo "Number is too big";
}
}
test(0);
test(1);
test(666);
这家店开了很长时间,也许对你有帮助。让我知道这是否对你有帮助 终端还是浏览器?@Rizier123浏览器的,但如果你两者都知道……删除旧的回音字符串,那么你就只会是你想要的,你不需要C/C++了。我在你的编辑中看到的所有可能的副本是ob_end_clean不起作用,但你没有解释任何过去的事情。正如您所描述的,问题在于您正在回显项目,并且如果代码满足特定条件,则希望清除这些项目。如果您使用链接问题中描述的ob_start,它应该完全满足您的要求。这个问题的其他答案也带来了更大的问题,那就是,你不应该重复一些不应该出现的东西。最好保存内容,并等待条件满足后再回显。您是否将其称为ob\u startPHP\u OUTPUT\u HANDLER\u CLEANABLE;。。。更多代码…ob_clean;?这两个都是正确的,另外,请确保您没有嵌套ob_开始调用。我已经在5天前编写了相同的解决方案,请参见下面或上面的评论。。。在发布之前尝试阅读其他人的答案。。。但你是对的,这是解决这种。。。问题…啊,对不起,亚当,我没看到。我刚刚给了你一个+1,至少我很高兴看到有人读了这个问题-
exit(' " /> </head><body> Page '.$pageID.' has no keywords </body></html>');
<?php
function test($var) {
if ($var === 0) {
echo "Hello ";
}
if ($var === 1) {
echo "World";
}
if ($var < 0 || $var > 1) {
echo "Number is too big";
}
}
test(0);
test(1);
test(666);
function test($var)
{
if ($var === 0) {
echo "Hello ";
}
if ($var === 1) {
echo "World";
}
if ($var < 0 || $var > 1) {
ob_clean();//clear all output till now
echo "Number is too big";
}
}
ob_start();//start buffering output
test(0);
test(1);
test(666);
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="Some page" />
<meta name="keywords" content="<?php keywords::run(); ?>" />
</head>
<body>
maybe some content?...
</body>
</html>
class YourErrorCatcher
{
private static $errors = array();//array for collecting all your errors
public static function addError($errorString)//method to add new error
{
self::$errors[] = $errorString;
}
public static function echoErrors()//function echoing all your errors in selected place
{
$errorMessage = implode("<br>", self::$errors);
echo $errorMessage;
return true;
}
}
<body>
maybe some content?...
and here we have our errors:
<?php YourErrorCatcher::echoErrors(); ?>
</body>
class keywords{
private static function run(){
//i assume that this function is echoing some keywords, so let's start buffering output
ob_start();
...pdo code...
...some more code...
if( $sht->rowCount() === 0 ){
ob_clean();//there's error - clear buffer!
//"throw" error
YourErrorCatcher::addError("Page " . $pageID . " has no keywords");
YourErrorCatcher::addError('Yes, you can "throw" more than one error in this solution and all of them will be shown.');
//instead of exit we're returning false
return false;
else...
...more code
}
...more code
}