Copyright © 2003 Pearson Education, Inc. Slide 6a-1 The Web Wizard’s Guide to PHP by David Lash.

Slides:



Advertisements
Similar presentations
Copyright © 2003 Pearson Education, Inc. Slide 8-1 The Web Wizards Guide to PHP by David Lash.
Advertisements

Copyright © 2003 Pearson Education, Inc. Slide 1-1 The Web Wizards Guide to PHP by David A. Lash.
Copyright © 2003 Pearson Education, Inc. Slide 6a-1 The Web Wizards Guide to PHP by David Lash.
Classes  All code in a Java program is part of a class  A class has two purposes  Provide functions to do work for the programmer  Represent data.
Copyright © 2003 Pearson Education, Inc. Slide 6b-1 The Web Wizard’s Guide to PHP by David Lash.
Computer Science 1620 Loops.
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 5 Looping.
1 *Copyright © 2002 Pearson Education, Inc.. 2 Web Wizard’s Guide to CGI/Perl David Lash Chapter 3 Perl Basics.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 5: Looping by Tony.
1 Controlling Script Flow! David Lash Chapter 3 Conditional Statements.
PERL Part 3 1.Subroutines 2.Pattern matching and regular expressions.
Chapter 5: Loops and Files.
Scripting Languages Chapter 8 More About Regular Expressions.
Bash Shell Scripting 10 Second Guide Common environment variables PATH - Sets the search path for any executable command. Similar to the PATH variable.
Form Handling, Validation and Functions. Form Handling Forms are a graphical user interfaces (GUIs) that enables the interaction between users and servers.
Slide 6a-1 CHAPTER 6 Matching Patterns: Using Regular expressions to match patterns.
1 Microsoft Access 2002 Tutorial 5 – Enhancing a Table’s Design, and Creating Advanced Queries and Custom Forms.
Last Updated March 2006 Slide 1 Regular Expressions.
Web forms in PHP Forms Recap  Way of allowing user interaction  Allows users to input data that can then be processed by a program / stored in a back-end.
1 Chapter 6 – Creating Web Forms and Validating User Input spring into PHP 5 by Steven Holzner Slides were developed by Jack Davis College of Information.
Regular Expressions Week 07 TCNJ Web 2 Jean Chu. Regular Expressions Regular Expressions are a powerful way to validate and format text strings that may.
XP New Perspectives on Microsoft Access 2002 Tutorial 51 Microsoft Access 2002 Tutorial 5 – Enhancing a Table’s Design, and Creating Advanced Queries and.
Copyright © 2003 Pearson Education, Inc. Slide 8-1 The Web Wizard’s Guide to PHP by David Lash.
Pattern matching with regular expressions A common file processing requirement is to match strings within the file to a standard form, e.g. address.
Faculty of Sciences and Social Sciences HOPE JavaScript Validation Regular Expression Stewart Blakeway FML
PHP Workshop ‹#› Data Manipulation & Regex. PHP Workshop ‹#› What..? Often in PHP we have to get data from files, or maybe through forms from a user.
Creating databases for web applications Play quizzes Testing process regular expressions: form validation PHP coding handling forms Homework: regular expressions.
Copyright © 2003 Pearson Education, Inc. Slide 5-1 The Web Wizard’s Guide to PHP by David Lash.
Sys.Prog & Scripting - HW Univ1 Systems Programming & Scripting Lecture 18: Regular Expressions in PHP.
CIS 218 Advanced UNIX1 CIS 218 – Advanced UNIX (g)awk.
Lecture 8 – Cookies & Sessions SFDV3011 – Advanced Web Development 1.
 2003 Prentice Hall, Inc. All rights reserved. CHAPTER 3 JavaScript 1.
Slide 7-1 CHAPTER 7 Managing Multiple-Form Applications: Writing scripts with multiple screens.
Slide 2-1 The Web Wizard’s Guide to PHP by David A. Lash.
Slide 3-1 CHAPTER 3 Conditional Statements Objectives To learn to use conditional test statements to compare numerical and string data values To learn.
1 Module 3 Conditional Statements. Objectives  Conditional test statements to compare numerical and string data values  Looping statements to repeat.
Enhancing Forms with OLE Fields, Hyperlinks, and Subforms – Project 5.
Regular Expressions in PHP. Supported RE’s The most important set of regex functions start with preg. These functions are a PHP wrapper around the PCRE.
PHP| SCK3633 Web Programming | Jumail, FSKSM, UTM, 2006 | Last Updated March 2006 Slide 1 Regular Expressions.
When you read a sentence, your mind breaks it into tokens—individual words and punctuation marks that convey meaning. Compilers also perform tokenization.
Copyright © 2003 Pearson Education, Inc. Slide 6a-1 The Web Wizard’s Guide to PHP by David Lash.
CS346 Regular Expressions1 Pattern Matching Regular Expression.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 5 Looping.
Copyright © 2003 Pearson Education, Inc. Slide 7-1 The Web Wizard’s Guide to PHP by David Lash.
CSC 2720 Building Web Applications PHP PERL-Compatible Regular Expressions.
Perl Day 4. Fuzzy Matches We know about eq and ne, but they only match things exactly We know about eq and ne, but they only match things exactly –Sometimes.
1 Lecture 9 Shell Programming – Command substitution Regular expressions and grep Use of exit, for loop and expr commands COP 3353 Introduction to UNIX.
Copyright © 2003 Pearson Education, Inc. Slide 2-1 The Web Wizard’s Guide to PHP by David A. Lash.
Slide 5-1 CHAPTER 5 Using Arrays for List Data Objectives To understand the benefits of using arrays in PHP To learn how to create and use sequential.
Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 5: Looping.
Validation using Regular Expressions. Regular Expression Instead of asking if user input has some particular value, sometimes you want to know if it follows.
1 Web Wizards Guide To PHP David Lash Chapter 2 Using Variables.
Introduction to Programming the WWW I CMSC Winter 2004 Lecture 13.
Copyright © 2003 Pearson Education, Inc. Slide 5-1 The Web Wizard’s Guide to PHP by David Lash.
Copyright © 2003 Pearson Education, Inc. Slide 4-1 The Web Wizard’s Guide to PHP by David Lash.
Copyright © 2003 Pearson Education, Inc. Slide 2-1 The Web Wizard’s Guide to PHP by David A. Lash.
Copyright © 2003 Pearson Education, Inc. Slide 3-1 The Web Wizard’s Guide to PHP by David A. Lash.
Copyright © 2003 Pearson Education, Inc. Slide 7-1 The Web Wizard’s Guide to PHP by David Lash.
Copyright © 2003 Pearson Education, Inc. Slide 8-1 The Web Wizard’s Guide to PHP by David Lash.
Linux Administration Working with the BASH Shell.
Validation Controls Assist your users with providing the correct type of input for your application Assist your users with providing the correct type of.
Section 10.1 Define scripting
Lecture 9 Shell Programming – Command substitution
Chapter 19 PHP Part II Credits: Parts of the slides are based on slides created by textbook authors, P.J. Deitel and H. M. Deitel by Prentice Hall ©
The Web Wizard’s Guide to PHP
Data Manipulation & Regex
PHP PART 2.
Validation using Regular Expressions
Presentation transcript:

Copyright © 2003 Pearson Education, Inc. Slide 6a-1 The Web Wizard’s Guide to PHP by David Lash

Copyright © 2003 Pearson Education, Inc. Slide 6a-2 CHAPTER 6 Matching Patterns: Using Regular expressions to match patterns

Copyright © 2003 Pearson Education, Inc. Objectives To learn to use PHP pattern-matching functions and regular expressions to match character string patterns and filter input data

Copyright © 2003 Pearson Education, Inc. Slide 6a-4 Why Match Patterns Scripting problem may require: verification of input from form was input a 7 digit phone number parsing input from a file FirstName:LastName:Age:Salary PHP supports three pattern matching functions: ereg(), split(), and ereg_replace(). Regular expressions are used to define very specific match patterns

Copyright © 2003 Pearson Education, Inc. Slide 6a-5 The ereg() function Use ereg() to check if a string contains a match pattern:

Copyright © 2003 Pearson Education, Inc. Slide 6a-6 For example Consider the following $name = 'Jake Jackson'; $pattern = 'ke'; if (ereg($pattern, $name)){ print 'Match'; } else { print 'No match'; } This code outputs “ Match” since the string “ke” is found. if $pattern was “aa” the above code segment would output “ No match”

Copyright © 2003 Pearson Education, Inc. Slide 6a-7 What are regular expressions? Special pattern matching characters with specific pattern matching meanings. Their meanings are defined by an industry standard (the IEEE POSIX standard). For example,a caret symbol (^) at the beginning of the match string returns a match when the pattern that follows starts the target string. $part = 'AA100'; $pattern = '^AA'; if (ereg($pattern, $part)) { print 'Match'; } else { print 'No match'; } Check if $part starts with “AA” Would be output if $part was “AB100”, “100AA”, or “Apple”.

Copyright © 2003 Pearson Education, Inc. Slide 6a-8 Selected Pattern Matching Characters

Copyright © 2003 Pearson Education, Inc. Slide 6a-9 Selected Pattern Matching Characters

Copyright © 2003 Pearson Education, Inc. Slide 6a-10 Selected Pattern Matching Characters

Copyright © 2003 Pearson Education, Inc. Slide 6a-11 For example... The following uses ereg() and eregi() (case insensitive compare) Enter product code (Use AA## format): Please enter description: Asks for a product code and description (not to contain “Boat” or “Plane”.

Copyright © 2003 Pearson Education, Inc. Slide 6a-12 A Full Script Example Consider an example script that enables end- user to select multiple items from a checklist. A survey about menu preferences Will look at how to send multiple items and how to receive them (later)

Copyright © 2003 Pearson Education, Inc. Slide 6a-13 A Full Example Product Information Results 2. 3.<?php $code = $_POST[“code”]; 4. $products = array('AB01'=>'25-Pound Sledgehammer', 'AB02'=>'Extra Strong Nails', 'AB03'=>'Super Adjustable Wrench', 'AB04'=>'3-Speed Electric Screwdriver'); 5. if (eregi('boat|plane', $description)){ 6. print 'Sorry, we do not sell boats or planes anymore'; 7. } elseif (ereg('^AB', $code)){ 8. if (isset($products["$code"])){ 9. print "Code $code Description: $products[$code]"; 10. } else { 11. print 'Sorry, product code not found'; 12. } 13. } else { 14. print 'Sorry, all our product codes start with "AB"'; 15.} ?> Create a list of products. Check if “boat” or “plane”. Check if valid product number. Receive $code

Copyright © 2003 Pearson Education, Inc. Slide 6a-14 The Output...

Copyright © 2003 Pearson Education, Inc. Slide 6a-15 Using grouping characters Use parentheses to specify a group of characters in a regular expression. Above uses parentheses with “|” to indicate “Dav” can be followed by “e” or “id”.

Copyright © 2003 Pearson Education, Inc. Slide 6a-16 Using grouping characters Now add in “^” and “$” characters...

Copyright © 2003 Pearson Education, Inc. Slide 6a-17 Use curly brackets to specify a range of characters Use curly brackets to look for a repeating of one or more characters E.g., L{3} matches 3 “L”s L{3,} matches3 or more “L”s L{2,4} matchs 2 to 4 “L”s

Copyright © 2003 Pearson Education, Inc. Slide 6a-18 Use square brackets for character classes Use square brackets to match one of character found inside them

Copyright © 2003 Pearson Education, Inc. Slide 6a-19 Use square brackets with range More common to specify a range of matches For example [0-9], [a-z] or [A-Z] Or use multiple characters at once...

Copyright © 2003 Pearson Education, Inc. Slide 6a-20 Using caret “^” and square brackets When caret “^” is first character within square brackets it means “not”. Note: Within a character class, as in [^... ], “^” means not. Earlier saw how it can indicate that the character that follows the caret symbol starts the match pattern

Copyright © 2003 Pearson Education, Inc. Slide 6a-21 Special Pre-defined character classes

Copyright © 2003 Pearson Education, Inc. Slide 6a-22 Special Pre-defined character classes

Copyright © 2003 Pearson Education, Inc. Slide 6a-23 Special Pre-defined character classes

Copyright © 2003 Pearson Education, Inc. Slide 6a-24 Building Regular Expressions that work Building Regular expressions is best done incrementally Lets look at a process to build a regular expression to validate a date input field: mm/dd/yyyy format (for example, 01/05/2002 but not 1/5/02 ).

Copyright © 2003 Pearson Education, Inc. Slide 6a-25 Building an Example Regular Expression 1. Determine the precise field rules. What is valid input and invalid input? You might decide to allow 09/09/2002 but not 9/9/2002 or Sep/9/2002 Work through several examples as follows:

Copyright © 2003 Pearson Education, Inc. Slide 6a-26 Building an Example Regular Expression 2. Get the form and form-handling scripts working Build the input form and a “bare bones”receiving script For example: receives input of 1 or more characters: if ( ereg( ‘.+’, $date ) ) { print "Valid date= $date"; } else { print "Invalid date= $date"; }

Copyright © 2003 Pearson Education, Inc. Slide 6a-27 Building an Example Regular Expression 3. Start with the most specific term possible You know must have 2 slashes between 2 character month, 2 character day and 4 character year So change receiving script to: if ( ereg( ‘../../....’, $date ) ) { print "Valid date= $date"; } else { print "Invalid date= $date"; } So 12/21/1234 and fj/12/ffff are valid, but 1/1/11 is not.

Copyright © 2003 Pearson Education, Inc. Slide 6a-28 Building an Example Regular Expression 4. Anchor the parts you can. Add the “ ^” and “ $” quantifiers where possible. Also, can add the [[:digit:]] character class to require numbers instead of any character. So change receiving script to: $two=‘[[:digit:]]{2}’; if ( ereg("^$two/$two/$two$two$", $date ) ) { print "Valid date= $date"; } else { print "Invalid date= $date"; } So 01/16/2003, 09/09/2005, 01/12/1211, and 99/99/9999 are valid dates.

Copyright © 2003 Pearson Education, Inc. Slide 6a-29 Building an Example Regular Expression 5. Get more specific if possible... You might note that three more rules can be added: The first digit of the month can be only 0, or 1. For example, 25/12/2002 is clearly illegal. The first digit of a day can be only 0, 1, 2, or 3. For example, 05/55/2002 is clearly illegal. Only allow years from this century allowed. Don’t care about dates like 05/05/1928 or 05/05/3003. $two=‘[[:digit:]]{2}’; $month=‘[0-1][[:digit:]]’; $day=‘[0-3][[:digit:]]’; $year="2[[:digit:]]$two"; if ( ereg("^($month)/($day)/($year)$", $date ) ) { Now input like 09/99/2001 and 05/05/4000 is illegal.

Copyright © 2003 Pearson Education, Inc. Slide 6a-30 A Full Script Example Consider an example script that asks end-user for a date Use regular expressions to validate Use the following HTML input

Copyright © 2003 Pearson Education, Inc. Slide 6a-31 A Full Example Decsions <?php $date = $_POST[“date”]; 5. $two=‘[[:digit:]]{2}’; 6. $month=‘[0-3][[:digit:]]’; 7. $day=‘[0-3][[:digit:]]’; 8. $year="2[[:digit:]]$two"; 9. if ( ereg("^($month)/($day)/($year)$", $date ) ) { 10. print "Got valid date=$date "; 11. } else { 12. print "Invalid date=$date"; 13. } 14. ?> Use same regular expression as before

Copyright © 2003 Pearson Education, Inc. Slide 6a-32 The Output...

Copyright © 2003 Pearson Education, Inc. Slide 6a-33 Matching Patterns With split() Use split() to break a string into different pieces based on the presence of a match pattern.

Copyright © 2003 Pearson Education, Inc. Slide 6a-34 Matching Patterns With split() Consider another example; $line = ‘Baseball, hot dogs, apple pie’; $item = split( ‘,’, $line ); foreach ($item as $key => $value) print(“$key=$value “); These lines will have the following output: 0=Baseball 1=hot dogs 2=apple pie

Copyright © 2003 Pearson Education, Inc. Slide 6a-35 Matching Patterns With split() When you know how many patterns you are interested can use list() along with split(): line = ‘AA1234:Hammer:122:12’; list($partno, $part, $num, $cost) = split(‘:’, $line, 4); print "partno=$partno part=$part num=$num cost=$cost"; The above code would output the following: partno=AA1234 part=Hammer num=122 cost=12

Copyright © 2003 Pearson Education, Inc. Slide 6a-36 Example of split() As an example of split() consider the following: $line = ‘Please, pass thepepper’; $result = split( ‘[[:space:]]+’, $line ); Will results in the following: $result[0] = ‘Please’; $result[1] = ‘,’ $result[2] = ‘pass’; $result[3] = ‘thepepper’;

Copyright © 2003 Pearson Education, Inc. Slide 6a-37 A Full Script Example Consider an example script that updates the date checker just studied: Uses split() to further refine date validation Uses the same input form:

Copyright © 2003 Pearson Education, Inc. Slide 6a-38 A Full Example Date Check <?php $date = $_POST[“date”]; 5. $two=‘[[:digit:]]{2}’; 6. $month=‘[0-3][[:digit:]]’; 7. $day=‘[0-3][[:digit:]]’; 8. $year="2[[:digit:]]$two"; 9. if ( ereg("^($month)/($day)/($year)$", $date ) ) { 10. list($mon, $day, $year) = split( ‘/’, $date ); 11. if ( $mon >= 1 && $mon <= 12 ) { 12. if ( $day <= 31 ) { 13. print "Valid date mon=$mon day=$day year=$year"; 14. } else { 15. print " Illegal day specifed Day=$day"; 16. } 17. } else { 18. print " Illegal month specifed Mon=$mon"; 19. } 20. } else { 21. print ("Invalid date format= $date"); 22. } 23. ?> Use split() and list() to get month, day and year.

Copyright © 2003 Pearson Education, Inc. Slide 6a-39 The Output...

Copyright © 2003 Pearson Education, Inc. Slide 6a-40 Using ereg_replace() Use ereg_replace() when replacing characters in a string variable. It can be used to replace one string pattern for another in a string variable. For example: $start = ‘AC1001:Hammer:15:150’; $end = ereg_replace( ‘Hammer’, ‘Drill’, $start ); print "end=$end"; The above script segment would output : end=AC1001:Drill:15:150

Copyright © 2003 Pearson Education, Inc. Slide 6a-41 Summary PHP supports a set of operators and functions that are useful for matching and manipulating patterns in strings: The ereg() function looks for and match patterns The split() function uses a pattern to split string values into as many pieces as there are matches. Regular expressions greatly enhance its pattern matching capabilities.