RE: [PHP] OT - Regular Expression

From: Date: Fri, 09 Feb 2007 15:16:37 +0000
Subject: RE: [PHP] OT - Regular Expression
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-248653@lists.php.net to get a copy of this message
> > As Rob suggested, why not just use two checks? e.g. > > > > if ( (strlen($input) == 4) && (strpos($input, '8') !== FALSE ) ) { > > // OK > > } else { > > // Not OK > > } > > > > Not only is this logic much easier to understand than a regexp > - important > > when someone else has to maintain your code later on etc., I > also believe it > > will be faster than using preg_match. > > Those would be the wrong two checks, you'd need 3 checks to do it that > way, I still suggested using a regex. The reason being that the original > requirements need the entire input to be digits :) > > <?php > > if( ereg( '^[[:digit:]]{4}$', $input ) > && > strpos( $input, '8' ) ) > { > // woot! > } > > // Or alternatively... > > if( strlen( $input ) == 4 > && > strpos( $input, '8' ) > && > ctype_digit( $input ) ) > { > // woot! > } > > ?> > > Cheers, > Rob. Oops - good catch! You still need the !== FALSE test with strpos through. Without it, the test will fail for any string starting with 8 as strpos will return 0. Edward

« previous php.general (#248653) next »