summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2008-04-10 21:07:57 +0200
committerAndreas Gohr <andi@splitbrain.org>2008-04-10 21:07:57 +0200
commitaa84f3869ebc3b9c7dafe1e18240e052fe716266 (patch)
treed16431fbe0fe148bf66d6c8b4a6e44f4a5e135e8
parent39c125d74a2284af307a6d8e1e1f20345d28e2c1 (diff)
downloadrpg-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.php16
-rw-r--r--inc/mail.php4
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);