From aa84f3869ebc3b9c7dafe1e18240e052fe716266 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Thu, 10 Apr 2008 21:07:57 +0200 Subject: fix parsing of email addresses with uppercase letters FS#1378 darcs-hash:20080410190757-7ad00-5876d4273cd99e64d1adc13e6a7e90e9b85cd673.gz --- _test/cases/inc/parser/parser_links.test.php | 16 ++++++++++++++++ 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 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); -- cgit v1.2.3