Jump to content

Wondering about new line behaviour.


leke

Recommended Posts

I have 2 pieces of different code that get run at different times, but act on the same text file.

(The first example writes data and the second rewrites data with some expired data removed from the rewrite.)

 

The first code example appends data to a new line each time it is run except when it is run just after the second code example has ran. When run after the second example, the first code example will append the data to the last line of the text file instead of appending to a new line.

Why is this?

 

Here is the first code example...

<?php

$message = "Hello, World! \nGoodbye!";
$message_br = str_replace("\n", '<br />', $message); // couldn't use nl2br because i needed to remove the \n completely. 
$userName = "Anon";
$coordinates = "1234567890";
$locationType = "geo";
$dateDay = "23";
$dateMonth = "2";
$dateYear = "2011";
$timeHour = "9";
$timeMins = 45;
$timeAMPM = "AM";

// Format the time/Date
date_default_timezone_set('UTC');
$inputTime = date('c', mktime((int)$timeHour, (int)$timeMins, 0, (int)$dateMonth, (int)$dateDay, (int)$dateYear));

// Send all data so far, to an array.
$entry_array = array();
array_push($entry_array, $inputTime, $locationType, $coordinates, $userName, $message_br);

// write the array to CSV file.
$fp = fopen('messages.txt', 'a');
fputcsv($fp, $entry_array, "|");
fclose($fp);

?>

 

Here is the second...

<?php

$one_day = 60*60*24;
$timestamp = time();
date_default_timezone_set('UTC');
$expiry_date = date('c', $timestamp+$one_day); 

$future_date = array();
$delete_line = array();

// Open existing data in the text file.
$lines = file('messages.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 
foreach ($lines as $line){
  list($field1, $field2, $field3, $field4, $field5) = explode('|', $line);
  if ($field1 < $expiry_date){ 
    array_push($delete_line, $line); // add to the to-be-deleted array.
  }
  else { array_push($future_date, $line); }
}

$array2string = implode("\n", $future_date); // convert array data to string.

// write the data to CSV file.
$fp = fopen('messages.txt', 'w');
fwrite($fp, $array2string);
fclose($fp);

?>

Link to comment
https://forums.phpfreaks.com/topic/233918-wondering-about-new-line-behaviour/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.