文字抓取和回声?

时间:2016-02-15 16:33:31

标签: php html

我试图这样做,所以每周我的PHP代码都会将文本存储在预先制作的文本文件中,并且每周都会回显一个新行。我尝试过使用date(),但事实并非如此。

以下是代码:

<?php 
    error_reporting(-1);
    ini_set('display_errors', 'On');
    $text = file_get_contents("lines.txt");  
    $text = trim($text); //This removes blank lines so that your 
    //explode doesn't get any empty values at the start or the end.     
    $array = explode(PHP_EOL, $text);
    $lineNumber = count($array);

    echo "<p>{$array[0]}</p>";
?>

以下是lines.txt的格式如下:

  
      
  1. Hello1
  2.   
  3. Hello2
  4.   
  5. Hello3
  6.   

以及

2 个答案:

答案 0 :(得分:0)

如果您只需要回显文本文件中的行:

$array = explode(PHP_EOL, $text);
foreach($array as $val){
    echo "$val\n";
}

如果您想每周回复一个新行,请在某处跟踪它,例如:

$counter = 0;
if(!file_exists("date.txt")){
    file_put_contents("date.txt",date("d"));
}else{
    $date = file_get_contents("date.txt");
    $dayNow = date("d");
    $counter = ($dayNow - $date)/7;
}
$text = file_get_contents("lines.txt");  
$text = trim($text);
$array = explode(PHP_EOL, $text);
echo $array[$counter]."\n";

答案 1 :(得分:0)

这是一个解决方案 - 如果我理解你的问题:

<?php
    $fname  = 'quoteoftheweek.txt';
    if (!file_exists($fname)) {
        $quote  = '???';                       // File does not exist
    } else {
        $lines  = file($fname, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
        $nweek  = (integer)date('W',time());  // Get the week number
        $nlines = count($lines);              // Get the number of lines
        // Calculate the index as week_number modulo number_of_lines
        // If number_of_lines < 1 set it to false
        $index  = ($nlines>0) ? ($nweek % $nlines) - 1 : false;
        $quote  = ($index!==false) ? $lines[$index] : '???';
    }

    echo '<p>Quote, week '.$nweek.' : ' . $quote . '</p>';

quoteoftheweek.txt 文件的内容:

  

本周的报价1   本周的报价2   本周报价3   本周的报价4   本周报价5   本周的报价6
........

结果(2016-02-15):

  

引用,第7周:第7周的报价

注意:

  • 该解决方案将文本文件直接读入数组。通过一个步骤删除换行符,跳过空行。
  • 它计算此数组的索引为 weeknumber modulo numberoflines 。因此,如果行数少于几周,则重新使用行。
  • 如果文本文件应为空或不存在,则显示“???”而是报价。