<?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>javier arturo rodríguez &#187; PHP</title>
	<atom:link href="http://javier.rodriguez.org.mx/index.php/category/code/php/feed" rel="self" type="application/rss+xml" />
	<link>http://javier.rodriguez.org.mx</link>
	<description>random musings</description>
	<lastBuildDate>Thu, 16 Apr 2009 14:00:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Demo for Luhn algorithm in PHP</title>
		<link>http://javier.rodriguez.org.mx/index.php/2006/02/24/demo-for-luhn-algorithm-in-php</link>
		<comments>http://javier.rodriguez.org.mx/index.php/2006/02/24/demo-for-luhn-algorithm-in-php#comments</comments>
		<pubDate>Fri, 24 Feb 2006 18:30:26 +0000</pubDate>
		<dc:creator>javier</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://javier.rodriguez.org.mx/?p=53</guid>
		<description><![CDATA[If you have a number that adheres to the Luhn algorithm for validation, you may check it easily with this short PHP snippet.

&#60;?php
function luhn&#40;$str&#41; &#123;
&#160; &#160; &#160; &#160; $odd = !strlen&#40;$str&#41;%2;
&#160; &#160; &#160; &#160; $sum = 0;
&#160; &#160; &#160; &#160; for&#40;$i=0;$i&#60;strlen&#40;$str&#41;;++$i&#41; &#123;
&#160; &#160; &#160; &#160; &#160; &#160; $n=0+$str&#91;$i&#93;;
&#160; &#160; &#160; &#160; &#160; &#160; $odd=!$odd;
&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>If you have a number that adheres to the Luhn algorithm for validation, you may check it easily with this short PHP snippet.</p>
<div class="codesnip-container" >
<div class="codesnip"><span class="kw2">&lt;?php</span><br />
<span class="kw2">function</span> luhn<span class="br0">&#40;</span><span class="re0">$str</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$odd</span> = !<a href="http://www.php.net/strlen"><span class="kw3">strlen</span></a><span class="br0">&#40;</span><span class="re0">$str</span><span class="br0">&#41;</span>%<span class="nu0">2</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sum</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$i</span>=<span class="nu0">0</span>;<span class="re0">$i</span>&lt;strlen<span class="br0">&#40;</span><span class="re0">$str</span><span class="br0">&#41;</span>;++<span class="re0">$i</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$n</span>=<span class="nu0">0</span>+<span class="re0">$str</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$odd</span>=!<span class="re0">$odd</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$odd</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sum</span>+=<span class="re0">$n</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span>=<span class="nu0">2</span>*<span class="re0">$n</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sum</span>+=<span class="re0">$x</span>&gt;<span class="nu0">9</span>?<span class="re0">$x</span>-<span class="nu0">9</span>:<span class="re0">$x</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="re0">$sum</span>%<span class="nu0">10</span><span class="br0">&#41;</span>==<span class="nu0">0</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="re0">$num</span> = <span class="re0">$_GET</span><span class="br0">&#91;</span><span class="st0">&#8216;number&#8217;</span><span class="br0">&#93;</span>;<br />
<span class="kw2">?&gt;</span><br />
&lt;!DOCTYPE HTML PUBLIC <span class="st0">&#8220;-//W3C//DTD HTML 4.01//EN&#8221;</span> <span class="st0">&#8220;http://www.w3.org/TR/html4/strict.dtd&#8221;</span>&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Online Luhn algorithm test&lt;/title&gt;<br />
&lt;meta http-equiv=<span class="st0">&#8220;Content-Type&#8221;</span> content=<span class="st0">&#8220;text/html; charset=ISO-8859-1&#8243;</span>&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
<span class="kw2">&lt;?php</span> <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$num</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw2">?&gt;</span><br />
<span class="kw2">&lt;?php</span>&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span>luhn<span class="br0">&#40;</span><span class="re0">$num</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw2">?&gt;</span><br />
&lt;div style=<span class="st0">&#8220;background:#ddffdd;border:1px solid #004400;&#8221;</span>&gt;<br />
<span class="kw2">&lt;?</span>=<a href="http://www.php.net/htmlspecialchars"><span class="kw3">htmlspecialchars</span></a><span class="br0">&#40;</span><span class="re0">$num</span><span class="br0">&#41;</span><span class="kw2">?&gt;</span> is valid<br />
&lt;/div&gt;<br />
<span class="kw2">&lt;?php</span>&nbsp; &nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span> <span class="kw2">?&gt;</span><br />
&lt;div style=<span class="st0">&#8220;background:#ffdddd;border:1px solid #880000;&#8221;</span>&gt;<br />
<span class="kw2">&lt;?</span>=<a href="http://www.php.net/htmlspecialchars"><span class="kw3">htmlspecialchars</span></a><span class="br0">&#40;</span><span class="re0">$num</span><span class="br0">&#41;</span><span class="kw2">?&gt;</span> is NOT valid<br />
&lt;/div&gt;<br />
<span class="kw2">&lt;?php</span>&nbsp; &nbsp;<span class="br0">&#125;</span> <span class="kw2">?&gt;</span><br />
<span class="kw2">&lt;?php</span> <span class="br0">&#125;</span> <span class="kw2">?&gt;</span><br />
&lt;form action=<span class="st0">&#8220;luhn.php&#8221;</span> method=<span class="st0">&#8220;GET&#8221;</span>&gt;<br />
&lt;div&gt;<br />
Number: &lt;input type=<span class="st0">&#8220;text&#8221;</span> name=<span class="st0">&#8220;number&#8221;</span> value=<span class="st0">&#8220;&lt;?=urlencode($num)?&gt;&#8221;</span> size=<span class="st0">&#8220;40&#8243;</span>/&gt;<br />
&lt;input type=<span class="st0">&#8220;button&#8221;</span> name=<span class="st0">&#8220;btSend&#8221;</span> value=<span class="st0">&#8220;Check&#8221;</span>/&gt;<br />
&lt;/div&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;</div>
</div>
<p>(<a href="/code/luhn-test-php.txt">Download</a>)<br />
You may test this script at <a href="http://javier.rodriguez.org.mx/code/luhn-test.php">http://javier.rodriguez.org.mx/code/luhn-test.php</a>.<br />
Please consider that this is a demo, so please do not use this to check credit card numbers <a href="#" title="Yes, this is a joke. Laugh.">unless you send me an expiry date</a>. <a href="http://en.wikipedia.org/wiki/CVV2">CCV2</a> has taken over as the preferred method for credit card number validation anyway.</p>
]]></content:encoded>
			<wfw:commentRss>http://javier.rodriguez.org.mx/index.php/2006/02/24/demo-for-luhn-algorithm-in-php/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Luhn algorithm in PHP</title>
		<link>http://javier.rodriguez.org.mx/index.php/2005/12/26/luhn-algorithm-in-php</link>
		<comments>http://javier.rodriguez.org.mx/index.php/2005/12/26/luhn-algorithm-in-php#comments</comments>
		<pubDate>Mon, 26 Dec 2005 14:53:03 +0000</pubDate>
		<dc:creator>javier</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://javier.rodriguez.org.mx/?p=42</guid>
		<description><![CDATA[As I mentioned before, the Luhn algorithm is used to validate some interesting numbers, most notably GSM IMEIs and credit card numbers. Here&#8217;s another implementation I wrote, this time in PHP.

function luhn&#40;$str&#41; &#123;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; $odd = !strlen&#40;$str&#41;%2;
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; $sum = 0;
&#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>As I mentioned <a href="/index.php/2005/12/23/luhn-algorithm-in-perl/">before</a>, the <a href="http://en.wikipedia.org/wiki/Luhn_algorithm">Luhn algorithm</a> is used to validate some interesting numbers, most notably GSM IMEIs and credit card numbers. Here&#8217;s another implementation I wrote, this time in PHP.</p>
<div class="codesnip-container" >
<div class="codesnip"><span class="kw2">function</span> luhn<span class="br0">&#40;</span><span class="re0">$str</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$odd</span> = !<a href="http://www.php.net/strlen"><span class="kw3">strlen</span></a><span class="br0">&#40;</span><span class="re0">$str</span><span class="br0">&#41;</span>%<span class="nu0">2</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sum</span> = <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span><span class="br0">&#40;</span><span class="re0">$i</span>=<span class="nu0">0</span>;<span class="re0">$i</span>&lt;strlen<span class="br0">&#40;</span><span class="re0">$str</span><span class="br0">&#41;</span>;++<span class="re0">$i</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$n</span>=<span class="nu0">0</span>+<span class="re0">$str</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$odd</span>=!<span class="re0">$odd</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$odd</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sum</span>+=<span class="re0">$n</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span>=<span class="nu0">2</span>*<span class="re0">$n</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sum</span>+=<span class="re0">$x</span>&gt;<span class="nu0">9</span>?<span class="re0">$x</span>-<span class="nu0">9</span>:<span class="re0">$x</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="re0">$sum</span>%<span class="nu0">10</span><span class="br0">&#41;</span>==<span class="nu0">0</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</div>
<p>(<a href="/code/luhn-php.txt">Download</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://javier.rodriguez.org.mx/index.php/2005/12/26/luhn-algorithm-in-php/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
