Re: regex operators

From: Date: Tue, 14 Oct 2003 15:04:03 +0000
Subject: Re: regex operators
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-4827@lists.php.net to get a copy of this message
David Sklar wrote:
I was thinking about adding one or two regex-related features to the engine: 1. "preg_case": this would behave just like case but instead of doing an equality comparison, would match against a regular expression, e.g. switch($data) { preg_case '/^\d{5}(-\d{4})?$/':
       print "US Postal Code";
       break;
preg_case '/^[a-z]\d[a-z] ?\d[a-z]\d$/i';
       print "Canadian Postal Code";
       break;
default:
       print "something else!";
}
i've started to play with a more general way to handle this: switch(mixed data [, callback compare_function]) {
     ...
"compare_function" would default to the functionality of the "==" operator to show the current behavior "compare_function" will be called with two parameters: the switch expression and the case value and should return true if both match, false otherwise as a special case "compare_function" should also accept "===" this way we do not have to add new keywords and are not limited to preg expresions here, possible uses not possible now would include: switch($foobar, "===") { case false: ... case 0: ... case '': ... switch($foobar, "preg_match") { case '/^\d{5}$/': ... case '/(foo)?bar/': ... switch($foobar, "fnmatch") { case '*.gif': ... case '*.jpg': ... switch($foober, "my_custom_function") { ... switch($foobar, array($this, "compare_function") { ... -- Hartmut Holzgraefe <hartmut@php.net>

« previous php.internals (#4827) next »