background
|
|
Games
Ruffnecks Gaming Gaming for everyone
More

Tombstone
Tombstone Tuning Home of tuning, projects and fast cars and boats.
More

RiscOS
Risc OS Info
All you need to know about Risc OS and more.
More icon
|
|
Up Image
Navigation
Search this Site
Enter your search terms

Site Breadcrumb - You are here
|
PHP/MySQL Tutorial
Lesson 3

by Graeme Merrall

Page 3 — Not-So-Simple Validation

Let's talk a bit about using regular expressions with the ereg() and eregi() functions. As I said earlier, these can be either quite complex or very simple, depending on what you need.

Using regular expressions, you can examine a string and intelligently search for patterns and variations to see whether they match the criteria you set. The most common of these involves checking whether an email address is valid (although, of course, there's no fail-safe way of doing this).

Rather than delve into the mysteries of regular expressions, I'll provide some examples. You can use the same form we created on the previous page - just paste in the lines below to see how they work.

First, let's make sure that text only has been entered into a form element. This regular expression tests true if the user has entered one or more lowercase characters, from a to z. No numbers are allowed:

if (!ereg("[a-Z]", $first) || !ereg("[a-Z]", $last)) {

Now, let's extend this expression to check whether the string is four to six characters in length. Using [[:alpha:]] is an easy way to check for valid alphabetic characters. The numbers in the braces check for the number of occurrences. And note that the ^ and $ indicate the beginning and end of the string.

if (!ereg("^[[:alpha:]]{4,6}$", $first) || !ereg("^[[:alpha:]]{4,6}$", $last)) {

Finally, let's build a regular expression that will check an email address' validity. There's been plenty of discussion about the effectiveness of checking for email addresses in this way. Nothing's completely foolproof, but what I have below works pretty well.

I took this gem from the PHP mailing list. It's a great resource - use it. And yes, this is as scary as it looks.


	if (!ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.

'@'.

'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.

'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $last)) {

Don't spend too much time looking at this. Just move on to the next page.

next page»