2016-02-15 3 views
0

Я пытаюсь сделать так, чтобы каждую неделю мой php-код получал текст, уже сохраненный в готовом текстовом файле, и echo выводит новую строку каждую неделю. Я пробовал использовать 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. hello2
  3. Hello3

А дальше и дальше

+0

В чем проблема? –

+0

Вам нужно как минимум сохранить флаг где-нибудь, чтобы указать неделю. Итак, мой вопрос: сколько недель у вас есть на тестовом файле?Если у вас есть 3 строки, как вы писали, как можно отслеживать следующую строку недели без флага. – ArrowHead

+0

Что случилось с использованием 'date'? – chris85

ответ

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"; 
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):

Quote, неделя 7: Цитата недели 7

Примечания:

  • Решение считывает текстовый файл прямо в массив.
    Линейные каналы удаляются, а пустые строки пропускаются за один шаг.
  • Он вычисляет индекс в этой матрице как weeknumber modulo numberoflines. Таким образом, если линий меньше, чем недель, он повторно использует строки.
  • Если текстовый файл должен быть пустым или не существует, он отображает '???' вместо цитаты.
Смежные вопросы