#41077 [Bgs->Opn]: Order may matter between brackets
| From: | aeolianmeson at blitzeclipse dot com | Date: | Wed, 09 May 2007 05:02:55 +0000 |
| Subject: | #41077 [Bgs->Opn]: Order may matter between brackets | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-112428@lists.php.net to get a copy of this message | ||
ID: 41077
User updated by: aeolianmeson at blitzeclipse dot com
Reported By: aeolianmeson at blitzeclipse dot com
-Status: Bogus
+Status: Open
Bug Type: *Regular Expressions
Operating System: 2000 Server
-PHP Version: 5.2.1
+PHP Version: 5.1.2
New Comment:
I'm not exactly sure what you're referring to. I can use the exact same
pattern with preg successfully. Can you confirm, or provide me a
specific URL to clarify your explanation?
Consider the following, where preg returns true and ereg returns
false:
$strEmail = "abc@def-.com";
$strReg = "^[a-z0-9_\-\.]+@[a-z0-9_\-\.]+\.[a-z0-9_\-\.]+$";
var_dump(eregi($strReg, $strEmail));
$strReg = "/^[a-z0-9_\-\.]+@[a-z0-9_\-\.]+\.[a-z0-9_\-\.]+$/i";
var_dump(preg_match($strReg, $strEmail));
Thanks :) .
Dustin Oprea
Previous Comments:
------------------------------------------------------------------------
[2007-04-13 16:25:25] johannes@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
Read about strings with double quotes. The \\ won\'t be seen by the
regexp engine.
------------------------------------------------------------------------
[2007-04-13 15:07:41] aeolianmeson at blitzeclipse dot com
Description:
------------
I needed to add a dash to a character class, so I appended it to the
present character class definition. It turns out that it wouldn't accept
unless I moved it to the middle.
Reproduce code:
---------------
// This works.
// $reg = "^[[:alnum:]_\.\-]+@[[:alnum:]_\.\-]+$";
// This does not work. The only difference
// is the order of the last two accepted
// characters in the first character class.
$reg = "^[a-z0-9_\-\.]+@[[:alnum:]_\.\-]+$";
var_dump(ereg($reg, 'ab-c@def.com'));
Expected result:
----------------
Does match.
Actual result:
--------------
Does not match.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=41077&edit=1