diff options
author | Andreas Gohr <andi@splitbrain.org> | 2008-04-10 21:07:57 +0200 |
---|---|---|
committer | Andreas Gohr <andi@splitbrain.org> | 2008-04-10 21:07:57 +0200 |
commit | aa84f3869ebc3b9c7dafe1e18240e052fe716266 (patch) | |
tree | d16431fbe0fe148bf66d6c8b4a6e44f4a5e135e8 | |
parent | 39c125d74a2284af307a6d8e1e1f20345d28e2c1 (diff) | |
download | rpg-aa84f3869ebc3b9c7dafe1e18240e052fe716266.tar.gz rpg-aa84f3869ebc3b9c7dafe1e18240e052fe716266.tar.bz2 |
fix parsing of email addresses with uppercase letters FS#1378
darcs-hash:20080410190757-7ad00-5876d4273cd99e64d1adc13e6a7e90e9b85cd673.gz
-rw-r--r-- | _test/cases/inc/parser/parser_links.test.php | 16 | ||||
-rw-r--r-- | inc/mail.php | 4 |
2 files changed, 18 insertions, 2 deletions
diff --git a/_test/cases/inc/parser/parser_links.test.php b/_test/cases/inc/parser/parser_links.test.php index d255437f8..62e3b3b99 100644 --- a/_test/cases/inc/parser/parser_links.test.php +++ b/_test/cases/inc/parser/parser_links.test.php @@ -112,6 +112,22 @@ class TestOfDoku_Parser_Links extends TestOfDoku_Parser { $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } + function testEmailCase() { + $this->P->addMode('emaillink',new Doku_Parser_Mode_Emaillink()); + $this->P->parse("Foo <bugs@pHp.net> Bar"); + $calls = array ( + array('document_start',array()), + array('p_open',array()), + array('cdata',array("\n".'Foo ')), + array('emaillink',array('bugs@pHp.net', NULL)), + array('cdata',array(' Bar'."\n")), + array('p_close',array()), + array('document_end',array()), + ); + $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); + } + + function testInternalLinkOneChar() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[l]] Bar"); diff --git a/inc/mail.php b/inc/mail.php index d908c009c..1f4acf346 100644 --- a/inc/mail.php +++ b/inc/mail.php @@ -180,8 +180,8 @@ function mail_encode_address($string,$header='',$names=true){ // NOTE: there is an unquoted '/' in RFC2822_ATEXT, it must remain unquoted to be used in the parser // the pattern uses non-capturing groups as captured groups aren't allowed in the parser // select pattern delimiters with care! -if (!defined('RFC2822_ATEXT')) define('RFC2822_ATEXT',"0-9a-z!#$%&'*+/=?^_`{|}~-"); -if (!defined('PREG_PATTERN_VALID_EMAIL')) define('PREG_PATTERN_VALID_EMAIL', '['.RFC2822_ATEXT.']+(?:\.['.RFC2822_ATEXT.']+)*@(?:[0-9a-z][0-9a-z-]*\.)+(?:[a-z]{2,4}|museum|travel)'); +if (!defined('RFC2822_ATEXT')) define('RFC2822_ATEXT',"0-9a-zA-Z!#$%&'*+/=?^_`{|}~-"); +if (!defined('PREG_PATTERN_VALID_EMAIL')) define('PREG_PATTERN_VALID_EMAIL', '['.RFC2822_ATEXT.']+(?:\.['.RFC2822_ATEXT.']+)*@(?i:[0-9a-z][0-9a-z-]*\.)+(?i:[a-z]{2,4}|museum|travel)'); function mail_isvalid($email){ return preg_match('<^'.PREG_PATTERN_VALID_EMAIL.'$>i', $email); |