<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dominic Sayers &#187; dave child</title>
	<atom:link href="http://blog.dominicsayers.com/tag/dave-child/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dominicsayers.com</link>
	<description></description>
	<lastBuildDate>Tue, 31 Aug 2010 09:12:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<atom:link rel='hub' href='http://blog.dominicsayers.com/?pushpress=hub'/>
		<item>
		<title>Email address validation 1.2</title>
		<link>http://blog.dominicsayers.com/2009/02/22/email-address-validation-12/</link>
		<comments>http://blog.dominicsayers.com/2009/02/22/email-address-validation-12/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 15:25:24 +0000</pubDate>
		<dc:creator>Dominic</dc:creator>
				<category><![CDATA[Email address validation]]></category>
		<category><![CDATA[Relevant to my work]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[cal henderson]]></category>
		<category><![CDATA[dave child]]></category>
		<category><![CDATA[doug lovell]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[haacked]]></category>
		<category><![CDATA[iamcal]]></category>
		<category><![CDATA[ietf]]></category>
		<category><![CDATA[phil haack]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rfc]]></category>
		<category><![CDATA[rfc2821]]></category>
		<category><![CDATA[rfc2822]]></category>
		<category><![CDATA[rfc3696]]></category>
		<category><![CDATA[rfc822]]></category>
		<category><![CDATA[simon slick]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://blog.dominicsayers.com/?p=399</guid>
		<description><![CDATA[I've also updated my own routine so that it still passes all the tests, of which there are now 158. As always, the full analysis is on my website and the latest version of the source code will always be in Google Code.]]></description>
			<content:encoded><![CDATA[<h4>Quick links: <a href="http://code.google.com/p/isemail/source/browse/#svn/trunk" target="_blank">Source code</a> | <a href="http://www.dominicsayers.com/isemail/" target="_blank">Email address validators head-to-head</a></h4>
<p>I had some very helpful input from Cal Henderson on interpreting RFC 2822. I&#8217;ve included his latest validator in my head-to-head comparison and updated the test suite to reflect the consensus from our discussion.</p>
<p>I&#8217;ve also updated my own routine so that it still passes all the tests, of which there are now 158. As always, the <a href="http://www.dominicsayers.com/isemail/" target="_blank">full analysis</a> is on my website and the <a href="http://code.google.com/p/isemail/source/browse/trunk" target="_blank">latest version of the source code</a> will always be in Google Code.</p>
<p>I would really appreciate it if you find a valid address that fails my validator, or an invalid one that passes, if you would get in touch with me and let me know.</p>
<p>Here are the latest scores:</p>
<p>Dominic Sayers: <strong>100% validated correctly<br />
<span style="font-weight:normal;">Simon Slick: <strong>91</strong><strong>%</strong><br />
Cal Henderson: <strong>84</strong><strong>%<br />
</strong></span></strong>Phil Haack: <strong>80</strong><strong>%<br />
<span style="font-weight:normal;">Dave Child</span><span style="font-weight:normal;">: </span>79</strong><strong>%</strong> </p>
<p><strong><span style="font-weight:normal;">I know Cal is working on IPv6 validation so this may change soon.</span></strong></p>
<h4><strong></strong>RFC nerd notes</h4>
<p>There are two principle changes in this version.</p>
<p>Firstly, I now accept Dave Child and Cal Henderson&#8217;s opinion that a backslash can escape <em>anything</em> in a quoted string local element. However, it must escape something &#8211; it can&#8217;t be at the end of the string.</p>
<p>Secondly, if the string is <em>not</em> quoted then the local element must be a vanilla atom. You can&#8217;t escape individual characters unless the element is surrounded by double quotes.</p>
<p>By &#8220;local element&#8221; I mean a single component of a dot-delimited local part.</p>
<p>I&#8217;ve extracted the raw specification of a valid email address in BNF (<a href="http://en.wiktionary.org/wiki/Backus-Naur_form">Backus-Naur form</a>) from RFC 5322 and put it here: <a href="http://www.dominicsayers.com/isemail/isemail/RFC5322BNF.html">The BNF from RFC 5322 defining parts of a valid email address</a>. If you try to follow this in the RFC you end up going backwards and forwards and getting confused &#8211; it&#8217;s much easier to understand in the way I&#8217;ve laid it out.</p>
<h4>Quick links: <a href="http://code.google.com/p/isemail/source/browse/trunk" target="_blank">Source code</a> | <a href="http://www.dominicsayers.com/isemail/" target="_blank">Email address validators head-to-head</a></h4>
]]></content:encoded>
			<wfw:commentRss>http://blog.dominicsayers.com/2009/02/22/email-address-validation-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Email address validation 1.0</title>
		<link>http://blog.dominicsayers.com/2009/02/20/email-address-validation-10/</link>
		<comments>http://blog.dominicsayers.com/2009/02/20/email-address-validation-10/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 10:39:14 +0000</pubDate>
		<dc:creator>Dominic</dc:creator>
				<category><![CDATA[Email address validation]]></category>
		<category><![CDATA[Relevant to my work]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[cal henderson]]></category>
		<category><![CDATA[dave child]]></category>
		<category><![CDATA[doug lovell]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[haacked]]></category>
		<category><![CDATA[ietf]]></category>
		<category><![CDATA[phil haack]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rfc]]></category>
		<category><![CDATA[rfc2822]]></category>
		<category><![CDATA[rfc3696]]></category>
		<category><![CDATA[rfc822]]></category>
		<category><![CDATA[simon slick]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://blog.dominicsayers.com/?p=384</guid>
		<description><![CDATA[I have now released version 1.0 of my PHP email address validator. This version passes all 139 unit tests in the suite - tests I have collated from RFC 3696 and from articles by Dave Child, Doug Lovell and Phil Haack. Plus some of my own to test the IPv6 address format.]]></description>
			<content:encoded><![CDATA[<h4>Quick links: <a href="http://code.google.com/p/isemail/source/browse/#svn/trunk" target="_blank">Source code</a> | <a href="http://www.dominicsayers.com/isemail/" target="_blank">Email address validators head-to-head</a></h4>
<p>OK, after some correspondence with <a href="http://www.addedbytes.com/blog/email-address-validation-v2/" target="_blank">Dave Child</a> and <a href="http://code.iamcal.com/php/rfc822/" target="_blank">Cal Henderson</a> I have now released version 1.0 of my PHP email address validator.</p>
<p>This version passes all 139 unit tests in the suite &#8211; tests I have collated from <a href="http://www.apps.ietf.org/rfc/rfc3696.html" target="_blank">RFC 3696</a> and from articles by Dave Child, <a href="http://www.linuxjournal.com/article/9585" target="_blank">Doug Lovell</a> and <a href="http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx" target="_blank">Phil Haack</a> plus some of my own to test the IPv6 address format. The <a href="http://www.dominicsayers.com/isemail/" target="_blank">full analysis</a> is on my website and the <a href="http://code.google.com/p/isemail/source/browse/#svn/trunk" target="_blank">latest version of the source code</a> will always be in Google Code.</p>
<p>I would really appreciate it if you find a valid address that fails my validator, or an invalid one that passes, if you would get in touch with me and let me know.</p>
<p>Here are the scores on the doors:</p>
<p>Dominic Sayers: <strong>100% validated correctly</strong><br />
Simon Slick: <strong>86%</strong><br />
Dave Child: <strong>81%</strong><br />
Phil Haack: <strong>79%</strong><br />
Cal Henderson: <strong>71%</strong></p>
<p>For the RFC nerds, this version now correctly validates the obsolete local form of <em>word *(&#8220;.&#8221; word)</em>. In other words you can regard the local part of the address as a dot-delimited series of elements each of which can be separately quoted. This means that <em>first.&#8221;last&#8221;@example.com</em> is now recognised as a valid address.</p>
<h4>Quick links: <a href="http://code.google.com/p/isemail/source/browse/#svn/trunk" target="_blank">Source code</a> | <a href="http://www.dominicsayers.com/isemail/" target="_blank">Email address validators head-to-head</a></h4>
]]></content:encoded>
			<wfw:commentRss>http://blog.dominicsayers.com/2009/02/20/email-address-validation-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Email validation head-to-head</title>
		<link>http://blog.dominicsayers.com/2009/02/10/email-validation-head-to-head/</link>
		<comments>http://blog.dominicsayers.com/2009/02/10/email-validation-head-to-head/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 12:42:05 +0000</pubDate>
		<dc:creator>Dominic</dc:creator>
				<category><![CDATA[Email address validation]]></category>
		<category><![CDATA[Relevant to my work]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[cal henderson]]></category>
		<category><![CDATA[dave child]]></category>
		<category><![CDATA[doug lovell]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[ietf]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rfc]]></category>
		<category><![CDATA[rfc2822]]></category>
		<category><![CDATA[rfc3696]]></category>
		<category><![CDATA[rfc822]]></category>
		<category><![CDATA[simon slick]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://blog.dominicsayers.com/?p=377</guid>
		<description><![CDATA[I've discovered a number of other public-domain functions that attempt to validate the format of an email address. I tried to validate my 124 test cases against these functions with interesting results]]></description>
			<content:encoded><![CDATA[<h4>Quick links: <a href="http://code.google.com/p/isemail/source/browse/#svn/trunk" target="_blank">Source code</a> | <a href="http://www.dominicsayers.com/isemail/" target="_blank">Email address validators head-to-head</a></h4>
<p>I&#8217;ve discovered a number of other public-domain functions that attempt to validate the format of an email address. I tried to validate my 124 test cases against these functions with the results below:</p>
<p><a href="http://code.google.com/p/isemail/source/browse/#svn/trunk" target="_blank">Dominic Sayers</a>: 100% correctly validated<br />
<a href="http://simonslick.com/VEAF/" target="_blank">Simon Slick</a>: 88% <br />
<a href="http://code.google.com/p/php-email-address-validation" target="_blank">Dave Child</a>: 80%<br />
<a href="http://code.iamcal.com/php/rfc822/" target="_blank">Cal Henderson</a>: 72%</p>
<p>Interestingly, all the other functions failed correctly to validate the example addresses given in <a href="http://www.apps.ietf.org/rfc/rfc3696.html#sec-3" target="_blank">RFC3696</a> (Section 3: Restrictions on email addresses).</p>
<p>I couldn&#8217;t include Doug Lovell&#8217;s <a href="http://www.linuxjournal.com/article/9585" target="_blank">function</a> in my tests because the code is copyright All Rights Reserved by Linux Journal (ironically).</p>
<p>Some of the other functions also supply test cases; I&#8217;ve added these to my test suite. More analysis and commentary here: <a href="http://www.dominicsayers.com/isemail/" target="_blank">RFC-compliant email address validator</a>.</p>
<p>In summary, I recommend you use my function if you want totally RFC-compliant address validation.</p>
<h4>Quick links: <a href="http://code.google.com/p/isemail/source/browse/#svn/trunk" target="_blank">Source code</a> | <a href="http://www.dominicsayers.com/isemail/" target="_blank">Email address validators head-to-head</a></h4>
]]></content:encoded>
			<wfw:commentRss>http://blog.dominicsayers.com/2009/02/10/email-validation-head-to-head/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
