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
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.