【问题标题】:Create new pages after 10 lines在 10 行之后创建新页面
【发布时间】:2019-02-22 17:44:33
【问题描述】:

这是我的 php 代码

<?php
$myFile = "hidata.txt";
$fh = fopen($myFile, 'r');
while(false !== ($theData = fgets($fh))) {
    echo ('<li>' . $theData . '</li>');
}
fclose($fh);
?>

这是我的 hidata.txt 中的内容

data1
data2
data3

它会像这样呼应所有行。

<li>data1</li>
<li>data2</li>
<li>data3</li>

我希望我的代码在当前页面超过 10 行后创建新的 .php 页面。

例如,我的 .txt 文件有超过 10 行这样的文本

data1
data2
data3
data4
data5
data6
data7
data8
data9
data10
data11
data12

这是它将在 index.php 页面中回显的内容。

<li>data1</li>
<li>data2</li>
<li>data3</li>
<li>data4</li>
<li>data5</li>
<li>data6</li>
<li>data7</li>
<li>data8</li>
<li>data9</li>
<li>data10</li>

在 10 行文本之后,我希望代码自动创建一个新的 php 文件 2.php,并且 10 行或 10 行以下的代码会像这样在 2.php 中回显。

<li>data11</li>
<li>data12</li>

如果我的 .txt 文件超过 20 行则创建 3.php ,如果达到 30 行则创建 4.php 等等。

我该怎么做?

【问题讨论】:

    标签: php html


    【解决方案1】:
    <?php
    $myFile = "hidata.txt";
    $fh = fopen($myFile, 'r');
    $counter = 1;
    $page = 2;
    while(false !== ($theData = fgets($fh))) {
        if ( $counter > 10){
             file_put_contents( $page.".php", '<li>' . $theData . '</li>' . PHP_EOL, FILE_APPEND  );
           if ($counter == 20){
                   $counter=10;
                   $page++;
           }
        }else{
        echo ('<li>' . $theData . '</li>');
       }
       $counter++;
    }
    fclose($fh);
    ?>
    

    所以如果你执行php thisscript.php &gt; index.php,第一次运行的10将像以前一样插入到index.php中

    当然可以做得更好,但我坚持使用您的初始代码.. :)

    【讨论】:

    • 谢谢。它工作得很好,但问题是它正在制作文件2php 而不是2.php。你能解决它吗?
    • 已更正。如果根据您的需要也请评价它。 :)
    【解决方案2】:

    只需在循环中的某处添加增量/检查,以检查当前文件是否有 10 行。当该计数器达到 10 时,开始一个新文件。

    <?php
    $myFile = "hidata.txt";
    $fh = fopen($myFile, 'r');
    $count;
    while(false !== ($theData = fgets($fh))) {
        if(count==10)
        {
            //create new file here
        }
        echo ('<li>' . $theData . '</li>');
    $count++;
    }
    fclose($fh);
    ?>
    

    【讨论】:

      【解决方案3】:

      您可以为每 10 个数据行创建新的 php 文件:

      <?php
          $myFile = "hidata.txt";
          $fh = fopen($myFile, 'r');
          $j = 0;
          while(false !== ($theData = fgets($fh))) {
              $i = 0;
              $f = fopen($j.".php", 'w');
              fwrite($f,  '<?php echo("<!--Header of every file.-->"); echo("');
              do {
                  fwrite($f, '<li>' . $theData . '</li>');
                  $i++;
              } while ($i < 10 && (false !== ($theData = fgets($fh))));
              $j++;
              fwrite($f,  '"); echo("<!--Footer of every file.-->")?>');
              fclose($f);
          }
          fclose($fh);
      ?>
      

      您可以进一步包含jQuery 函数来自动打开创建的文件:

      <script>
        $(document).ready(function(){
          for(var i = 0; i < <?php echo "$j";?>; i++)
              window.open(i+'.php', '_blank');          
        });
      </script>
      

      【讨论】:

      • @Sadie 你是否包含了 jQuery CDN?
      猜你喜欢
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 1970-01-01
      • 2018-06-11
      相关资源
      最近更新 更多