Quick Upload

Loading...
Flash Player 9 (or above) is needed to view slideshows. We have detected that you do not have it on your computer.To install it, go here
Post to Twitter Post to Twitter
Share on Facebook
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons
SlideShare is now available on LinkedIn. Add it to your LinkedIn profile.

Regular Expressions 2007

From Geoff, 2 years ago Add as contact

Beginners guide to using Regular Expressions in PHP

1545 views | 0 comments | 5 favorites | 95 downloads | 1 embeds (Stats)

Embed in your blog options close
Embed (wordpress.com) Exclude related slideshows Embed in your blog

More Info

This slideshow is Public
Total Views: 1545 on Slideshare: 1439 from embeds: 106
Most viewed embeds (Top 5): More
All Embeds: Less
Flagged as inappropriate Flag as inappropriate

Flag as inappropriate

Select your reason for flagging this slideshow as inappropriate.

If needed, use the feedback form to let us know more details.

Slideshow Transcript

  1. Slide 1: Regular Expressions for PHP Adding magic to your programming. Geoffrey Dunn (geoff@warmage.com)
  2. Slide 2: What are Regular Expressions • Regular expressions are a syntax to match text. • They date back to mathematical notation made in the 1950s. • Became embedded in unix systems through tools like ed and grep.
  3. Slide 3: What are RE • Perl in particular promoted the use of very complex regular expressions. • They are now available in all popular programming languages. • They allow much more complex matching than strpos()
  4. Slide 4: Why use RE • You can use RE to enforce rules on formats like phone numbers, email addresses or URLs. • You can use them to find key data within logs, configuration files or webpages.
  5. Slide 5: Why use RE • They can quickly make replacements that may be complex like finding all email addresses in a page and making them address [AT] site [dot] com. • You can make your code really hard to understand
  6. Slide 6: Syntax basics • The entire regular expression is a sequence of characters between two forward slashes (/) • abc - most characters are normal character matches. This is looking for the exact character sequence a, b and then c • . - a period will match any character (except a newline but that can change) • [abc] - square brackets will match any of the characters inside. Here: a, b or c.
  7. Slide 7: Syntax basics • ? - marks the previous as optional. so a? means there might be an a • (abc)* - parenthesis group patterns and the asterix marks zero or more of the previous character. So this would match an empty string or abcabcabcabc • \\.+ - the backslash is an all purpose escape character. the + marks one or more of the previous character. So this would match ......
  8. Slide 8: More syntax tricks • [0-4] - match any number from 0 to 4 • [^0-4] - match anything not the number 0-4 • \\sword\\s - match word where there is white space before and after • \\bword\\b - \\b marks a word boundary. This could be white space, new line or end of the string
  9. Slide 9: More syntax tricks • \\d{3,12} - \\d matches any digit ([0-9]) while the braces mark the min and max count of the previous character. In this case 3 to 12 digits • [a-z]{8,} - must be at least 8 letters
  10. Slide 10: Matching Text • Simple check: preg_match(“/^[a-z0-9]+@([a- z0-9]+\\.)*[a-z0-9]+$/i”, $email_address) > 0 • Finding: preg_match(“/\\bcolou?r:\\s+([a-zA- Z]+)\\b/”, $text, $matches); echo $matches[1]; • Find all: preg_match_all(“/<([^>]+)>/”, $html, $tags); echo $tags[2][1];
  11. Slide 11: Matching Lines • This is more for looking through files but could be for any array of text. • $new_lines = preg_grep(“/Jan[a-z]*[\\s\\/\\-] (20)?07/”, $old_lines); • Or lines that do not match by adding a third parameter of PREG_GREP_INVERT rather than complicating your regular expression into something like /^[^\\/]|(\\/[^p])|(\\/p[^r]) etc...
  12. Slide 12: Replacing text preg_replace( “/\\b[^@]+(@)[a-zA-Z-_\\d]+(\\.)[a-zA-Z-_\\d\\.]+\\b/”, array(“ [AT] “, “ [dot] “), $post);
  13. Slide 13: Splitting text • $date_parts = preg_split(“/[-\\.,\\/\\\\\\s]+/”, $date_string);
  14. Slide 14: Tips • Comment what your regular expression is doing. • Test your regular expression for speed. Some can cause a noticeable slowdown. • There are plenty of simple uses like /Width: (\\d+)/ • Watch out for greedy expressions. Eg /(<(.+)>)/ will not pull out “b” and “/b” from “<b>test</b>” but instead will pull “b>test</b”. A easy way to change this behaviour is like this: /(<(.+?)>)/
  15. Slide 15: References • http://en.wikipedia.org/wiki/Regular_expressions • http://php.net/manual/en/ref.pcre.php • Thank you