Hi
I'm learning php and trying to write a script to extract registration information from a large text file. Sadly my meagre knowledge of php is letting me down a bit. It's a case of knowing what you want the script to do but not having the knowlege of how to 'say it'.
So i was hoping that if I posted my code here someone could either give me a few pointers on where i am going wrong or suggest a better way.
The text file data luckily has a recurring format as follows (for brevity i've only included one entry, which contains made up information):
From: bella_done@yahoo.co.uk
Sent: 02 February 2011 22:50
To: Jonny tum, patsy fells, dingly bongo
Subject: Subject: Fun Run 2010
Categories: Fun Run
Name: Bella Donna
Address: 14 brondle avenue
Postcode: cd83 1rg
Phone: 0287343510
Email: bella_don@yahoo.co.uk
DOB: 15/11/1945
Half or Full: Full fun run
How did you hear: Took part in 2010
As you can see the data has a convenient boundary at the 'from' field and the colon (or so it occurred to me) so I created my script as follows:
// the string being analysed
$the_string = "
From: bella_done@yahoo.co.uk
Sent: 02 February 2011 22:50
To: Jonny tum, patsy fells, dingly bongo
Subject: Subject: Fun Run 2010
Categories: Fun Run
Name: Bella Donna
Address: 14 brondle avenue
Postcode: cd83 1rg
Phone: 0287343510
Email: bella_don@yahoo.co.uk
DOB: 15/11/1945
Half or Full: Full fun run
How did you hear: Took part in 2010";
// remove all formatting to work with a clean string
$clean_string = strip_tags($the_string);
// remove form field entries from the data and replace with commas and a ZZZ boundary
$remove_fields = array("Categories:" => "","Name:" => ",","Address:" => ",","Postcode:" => ",","Phone:" =>
",","Email:" => ",","DOB:" => ",","Half or Full:" => ",","How did you hear:" => ",","From:" => "ZZZ","Sent:" =>
",","To:" => ",", );
$new_string = strtr("$clean_string",$remove_fields);
// split the data at the boundary ZZZ
$string_to_array = explode("ZZZ", $new_string);
$new_string2 = implode("</br>",$string_to_array);
echo $new_string2;
$myFile = "address_list.csv";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $new_string2;
fwrite($fh, $stringData);
fclose($fh);
One major problem is when i write the new data to a csv file the csv contains spacings that cause it to be reproduced in a column form rather than as separate fields for each comma boundary.
So can anyone suggest either
a) a better way of extracting the data from the text file (doesn't need to be 100% clean and perfect)
b) How can i stop the spaces in the csv (i thought i would have fixed this when i stripped the tags from the string at the start??).
Any help would be greatly received by a newbie phper.
It's my first shot at performing anything moderately taxing so if I've made some blaring oversites I would very much welcome your wisdom!
Thank you
Drongo