Despite the popularity of XML, comma-separated values (CSV) are still used in many applications. You might like it or not, but they are, and PHP offers two very strong functions to handle CSV strings. And that is what I will show you today.

PHP Function: explode

The PHP explode function is used to split a CSV string into an array. Let's say you have a string that looks like this:

Elvis;Costello;This Years Model;1978;

If you want to split it into an array, the code you must use will look like this:

<?php

$dlm = ";";

$string = "Elvis;Costello;This Years Model;1978";

$ary = explode($dlm,$string);

print_r ($ary);?>

That code will return something like this:

Array

(

[0] => Elvis

[1] => Costello

[2] => This Years Model

[3] => 1978

)

Very simple and very easy to use.

You can also combine the explode function with the list function to place the CSV chunks into variables right away. Suppose you run the following code:

Check the MySQL table to see that data is in the table. Otherwise, the script will also return the number of rows in the table, as shown in Figure 1:

Figure 1: This is the result after running the script.

That completes the explode section. I am sure you can see the strength in the function, and I hope the sample code will get you started if you have the need. But what if one has to go the other way round and build a CSV file? Of course, PHP also has a function for that, so please let me introduce implode.

PHP Function: implode

The PHP manual at php.net states that implode joins array elements with a string, and that is just what it does, so let's just cut all the talking and head straight to an example.

$dlm = ";";

$ary = array('Elvis', 'Costello', 'My Aim Is True', '1977');

$string = implode( $dlm, $ary );

echo $string . "<br>";

Or if you fill the array the RPG way, it could look like this:

$ary[0] = "Elvis";

$ary[1] = "Costello";

$ary[2] = "My Aim Is True";

$ary[3] = "1977";

$string = implode( $dlm, $ary );

echo $string . "<br>";

In both cases, the result would be this:

Elvis;Costello;My Aim Is True;1977

You might not use implode because you have your data in some variables. Then you would just create the string like this:

$dlm = ";";

$string = $var1 . $dlm . $var2. $dlm . $var3. $dlm ….. and so on

I have created an example that reads the data from the explode example and creates a new CSV file called new_albums.csv and places it in the same directory as the rest of the sample code. Look in the download section for the sample download.

Please Note: Because of space constraints, I will not go through the sample code, but I am sure you can easily read and understand it.

To install:

Download and unzip in the same place as the explode sample.

Run put_csv.php. You can run it with parameter append Y/N. Y will open the CSV file so that records will be added to the file. N will open the CSV file so that data will be cleared and added. The default is to clear the file:Call examples:

Download Section

What's Next?

I hope these small PHP tips come in handy for you. I know the code samples are simple, but they are just meant as appetizers for you to get started with PHP. Although PHP might not be in your scope today, have a look and learn it anyway. You never know what the future might bring.

And one more thing: please comment about the tips in the associated forum. Positive or negative does not really matter. Share your experiences. Even though you might find your code trivial, somebody else might find it very useful.

See you again soon with more handy PHP functions to hang on your toolbelt.