Saturday 1 February 2014

How can I convert ereg expressions to preg in PHP?

The biggest change in the syntax is the addition of delimiters.
ereg('^hello', $str);
preg_match
('/^hello/', $str);
Delimiters can be pretty much anything that is not alpha-numeric, a backslash or a whitespace character. The most used are generally ~, / and #.
You can also use matching brackets:
preg_match('[^hello]', $str);
preg_match
('(^hello)', $str);
preg_match
('{^hello}', $str);
// etc
If your delimiter is found in the regular expression, you have to escape it:
ereg('^/hello', $str);
preg_match
('/^\/hello/', $str);
You can easily escape all delimiters and reserved characters in a string by using preg_quote:
$expr = preg_quote('/hello', '/');
preg_match
('/^'.$expr.'/', $str);
Also, PCRE supports modifiers for various things. One of the most used is the case-insensitive modifier i, the alternative to eregi:
eregi('^hello', 'HELLO');
preg_match
('/^hello/i', 'HELLO');
You can find the complete reference to PCRE syntax in PHP in the manual, as well as a list of differences between POSIX regex and PCRE to help converting the expression.

0 comments:

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More