0
$file =  fopen("teste.php","r");
$members[]="";
$i=0;
while (!feof($file)) {
    $members[] = fgets($file);
    ?>
        <script>
            alert('<?php echo fgets($file); ?>');
        </script>
    <?php
}

这是我的代码,有人能告诉我为什么警报是空的吗?

4

4 回答 4

0
$members[] = fgets($file);
?>
    <script>
        alert('<?php echo fgets($file); ?>');
    </script>

fgets每次调用内部指针都会向前移动。我猜你的文件是一行文本。

所以它被读入$members,然后指针位于文件的末尾。因此,对它的下一次调用(被放入警报的那个)没有返回任何内容。

尝试$tmp = fgets($file); $members[] = $tmp; ... alert('<?php echo $tmp; ?>');

于 2013-06-20T15:27:47.170 回答
0

假设您的意思是当服务器到达您的 php 代码中的某个点时,您希望从浏览器弹出警报,答案是“不”,您不能

当服务器运行您的 php 代码时,与浏览器没有联系(直到响应开始返回)。在某些情况下,服务器可能会将内容流式传输回浏览器,在这种情况下,可能会有一些商定的约定让服务器使用要立即发出警报的消息来标记内容流,但是我不认为这是你在这里问的。

于 2013-06-20T15:19:20.480 回答
0

在脚本中,您可能已经在 EOF 上。

要获得您的预期结果,请尝试

  $file =  fopen("teste.php","r");
    $members[]="";
    $i=0;
    while (!feof($file)) {

        ?>
            <script>
                alert('<?php echo fgets($file); ?>');
            </script>
        <?php
    }

或者

  $file =  fopen("teste.php","r");
    $members[]="";
    $i=0;
    while (!feof($file)) {
        $members[] = fgets($file);
        ?>
            <script>
                alert('<?php echo fgets($file); ?>');
            </script>
        <?php
    }

于 2013-06-20T15:24:25.180 回答
0

这是我的代码,有人能告诉我为什么警报是空的吗?

<?php

$file =  fopen("teste.php","r");
$members[]="";
$i=0;
while (!feof($file)) 
{
   $line = fgets($file); //move the cursor
   $members[] = $line; 

        echo "<script>";
        echo   "alert($line);";
        echo "</script>";

}

?>

很晚才知道。我正在寻找与 fopen 有关的东西,并认为我会添加解决方案,因为我偶然发现了这个问题。

于 2017-05-10T19:42:11.590 回答