CRLF to LF PHP


 
Thread Tools Search this Thread
Top Forums Web Development CRLF to LF PHP
# 1  
Old 01-05-2012
CRLF to LF PHP

So I have this PHP script that takes info from HTML form and saves the info to a txt file.

Here is the code

Code:
<?php
$input = $_POST['msg'];
$dateposted = date("m-d-Y-His");
$fp = fopen("/some/location/public_html/sh/$dateposted.txt", "w"); 
fwrite($fp, $input.).'&nbsp;';
fclose($fp);
header("Location: http://SomeWebSite.com");
?>

This seems to work fine as it spits out a text file. BUT what I need to make sure happens is that any windows returns (CRLF) are changed to unix returns (LF).

I am sure this is easy to do but have not been able to figure it out.

Thanks in advance for your help!

Last edited by GroveTuckey; 01-06-2012 at 01:12 AM..
# 2  
Old 01-05-2012
I don't have any experience with PHP, but after about 5 minutes of searching I believe I've found something that will help.

PHP: preg_replace - Manual
# 3  
Old 01-06-2012
Quote:
Originally Posted by agama
I don't have any experience with PHP, but after about 5 minutes of searching I believe I've found something that will help.

PHP: preg_replace - Manual

Yeah I seen that but can't figure out how to incorporate that into what I have. I will keep on trying.

---------- Post updated at 10:48 AM ---------- Previous update was at 07:54 AM ----------

I think I figured it out. I used str_replace instead of preg_replace.

Code:
<?php
$input = $_POST['msg'];
$out = str_replace(array("\r\n"), "\n", $input);
$dateposted = date("m-d-Y-His");
$fp = fopen("/some/location/public_html/sh/$dateposted.txt", "w");
fwrite($fp, $out).'&nbsp;';
fclose($fp);
header("Location: http://somewebsite.com/sh/sh.html");
?>

If there is a better way of doing this let me know.

Thanks again!
# 4  
Old 01-06-2012
Some systems translate \n into \r\n for you when you write to text files, so I wasn't sure your string even contained \r\n in the first place.

Knowing for sure that string replacement will actually work here, I'd do this to delete all carriage returns:

Code:
$input=strtr($input, array("\r" => ""));

Nothing wrong with the way you're doing it, though. This may be slightly more efficient but I don't think it's a big deal.
# 5  
Old 01-12-2012
Now I would like to ftp this file created to another server.

I have tried the following:

Code:
<?php
$input = $_POST['msg'];
$out = str_replace(array("\r\n"), "\n", $input);
$dateposted = date("m-d-Y-His");
$fp = fopen("/home/somefolder/public_html/sh/$dateposted.txt", "w");
fwrite($fp, $out).'&nbsp;';
fclose($fp);

// FTP access parameters
$host = 'somesite.com';
$usr = 'usesrname';
$pwd = 'password';
 
// file to move:
$local_file = $fp;
$ftp_path = '/home/somefolder/public_html/';
 
// connect to FTP server (port 21)
$conn_id = ftp_connect($host, 21) or die ("Cannot connect to host");
 
// send access parameters
ftp_login($conn_id, $usr, $pwd) or die("Cannot login");
 
// turn on passive mode transfers (some servers need this)
// ftp_pasv ($conn_id, true);
 
// perform file upload
$upload = ftp_put($conn_id, $ftp_path, $local_file, FTP_ASCII);
//ftp_put($conn_id, $ftp_path, $local_file, FTP_ASCII); 
// check upload status:
print (!$upload) ? 'Cannot upload' : 'Upload complete';
print "\n";
header("Location: http://somesite.com/sh/sh.php");
?>

When I use that I get an error.


Warning: ftp_put() expects parameter 3 to be string, resource given in /home/somesite/public_html/sh/data.php on line 28

This is the code on that line:

Code:
$upload = ftp_put($conn_id, $ftp_path, $local_file, FTP_ASCII);

I am no expert at ay of this so I am sure there is a better way to ftp via PHP.

I will keep looking around for an answer in the meantime.

Thanks in advance!
# 6  
Old 01-12-2012
It's telling you what the problem is -- something wrong with $local_file.

What is $local_file, exactly?

You define it with $local_file=$fp, and what is $fp, exactly?

Well, it was a file pointer, which is not and never was a string, and it complains that it wants a string. (You kind of called fclose($fp) a few lines above, so now it's not really anything at all.) If it expects a string, what does it want? The file name, not a file pointer. Give it "/home/somefolder/public_html/sh/$dateposted.txt"
# 7  
Old 01-12-2012
Quote:
Originally Posted by Corona688
It's telling you what the problem is -- something wrong with $local_file.

What is $local_file, exactly?

You define it with $local_file=$fp, and what is $fp, exactly?

Well, it was a file pointer, which is not and never was a string, and it complains that it wants a string. (You kind of called fclose($fp) a few lines above, so now it's not really anything at all.) If it expects a string, what does it want? The file name, not a file pointer. Give it "/home/somefolder/public_html/sh/$dateposted.txt"
I thought $fp was going to be a txt file with todays date. I tried

Code:
/home/somefolder/public_html/sh/$dateposted.txt

It complained about unexpected "/"

I also tried
Code:
$local_file = $dateposted.txt;

and it seemed to try and find a file but missing the .

Code:
Warning: ftp_put(01-12-2012-110821txt) [function.ftp-put]: failed to open stream

Thanks for your help Corona688!
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace CRLF between pipe (|) delimiter with LF

Hi Folks! Need a solution for the following :- Source data ------------- 123|123|<CRLF><CRLF><CRLF>|321<CRLF> Required output ------------------ 123|123|<LF><LF><LF>|321<CRLF> <CRLF> represents carriage return <LF> represents line feed Being hunting high and low for a... (10 Replies)
Discussion started by: hishamzz
10 Replies

2. Shell Programming and Scripting

Removing CRLF combo but not CR or LF when alone

What is the command or script to remove CRLF but only when joined? Tried using below but removed all instances of either cat a.txt | tr -d "\r\n" > b.txt (14 Replies)
Discussion started by: qqp
14 Replies

3. Shell Programming and Scripting

Sorting file with CRLF within field, RS=$

OK below is what my sample file looks like. I need to sort by the Primary Key ie: {1:F01SAESVAV0AXXX0466020126} in the first record. Record seperator is $. I tried sort, but it completely messes it up. I am thinking I will need to use something like awk which understands the record seperator... (6 Replies)
Discussion started by: alfredo123
6 Replies

4. Shell Programming and Scripting

Appending CRLF to end of record

I need to append |\r\n (a pipe character and CRLF) at end of each record in Unix to all records where they are not already present. So first check for the presence of |\r\n and if absent append it else do nothing (3 Replies)
Discussion started by: abhilashnair
3 Replies

5. Homework & Coursework Questions

Convert ASCII Text, with CRLF

1. The problem statement, all variables and given/known data: write a script asciiFix.sh that takes an arbitrary number of file paths from the command line and carries out the same analysis on each one. If a file is not Windows ASCII, your script should do nothing to it. For each file that is... (7 Replies)
Discussion started by: kwatt019
7 Replies

6. Shell Programming and Scripting

Issue with a file that contains CRLF

I have a nawk that reads in a log file and outputs a file that matches my search. IFS=" " while read record do `echo $record | nawk 'BEGIN { FS=" " } { type_record=substr($0, 1, 1); if (... (14 Replies)
Discussion started by: Pablo_beezo
14 Replies

7. Shell Programming and Scripting

Converting hex value 7C (for pipe) to CRLF in Unix

I am trying to convert a txt file that includes one long string of data. The lines are separated with hex value 7C (for pipe). I am trying to process this file using SQR (Peoplesoft) so I thought the easiest thing to do would be to replace the eol char with a CRLF in unix so I can just... (4 Replies)
Discussion started by: sfedak
4 Replies

8. AIX

CRLF during SFTP transfer is appearing only in one server

Hello. I have got 3 unix boxes A B C. Box A is being used to prepare some reports. After the reports generation, Box A sftp the reports to Box B and Box C. When I look at the report in Box B and Box C. The reports are different. In Box B, I see using od -x command there is CRLF (\r\n) at the end... (7 Replies)
Discussion started by: panchpan
7 Replies

9. Shell Programming and Scripting

Add CRLF is probably simple!

I am building a script that will execute programs using records/fields in a file as arguments. Before I start testing that, I am working on reading the file properly and using printf to display the fields in the file. I used typeset to format my output. Now all I need is to figure out how to... (1 Reply)
Discussion started by: Skyybugg
1 Replies
Login or Register to Ask a Question