<?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>macouno.com &#187; Web development</title>
	<atom:link href="http://www.macouno.com/category/miscellaneous/webdevelopment/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.macouno.com</link>
	<description>The shenanigans of Dolf J. Veenvliet</description>
	<lastBuildDate>Tue, 31 Jan 2012 13:37:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Making a category based menu with posts in wordpress 2.9.2</title>
		<link>http://www.macouno.com/2010/05/23/making-a-category-based-menu-with-posts-in-wordpress-2-9-2/</link>
		<comments>http://www.macouno.com/2010/05/23/making-a-category-based-menu-with-posts-in-wordpress-2-9-2/#comments</comments>
		<pubDate>Sun, 23 May 2010 09:07:32 +0000</pubDate>
		<dc:creator>macouno</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.macouno.com/?p=800</guid>
		<description><![CDATA[I was not entirely happy with the way wordpress handles menus for this (my own) website. I like the idea of making all the content posts so they&#8217;re bound to a date and such. Then I&#8217;d like to see them in the menu based on the category they&#8217;re in. There are category menus, and even [...]]]></description>
			<content:encoded><![CDATA[<p>I was not entirely happy with the way wordpress handles menus for this (my own) website. I like the idea of making all the content posts so they&#8217;re bound to a date and such. Then I&#8217;d like to see them in the menu based on the category they&#8217;re in. There are category menus, and even nice folding ones, but I couldn&#8217;t find one that displays all the posts per category in a nice way.</p>
<p>So I decided to hack one in myself. It&#8217;s a very nasty hack&#8230; and I just put a bunch of code in the sidebar.php of my template. But that said&#8230; it works and I now have a menu that does what I want.</p>
<p><strong>If you&#8217;d like to use this&#8230; just remember it&#8217;s a great big bad hack and very inefficient!</strong></p>
<p>Here&#8217;s the html/php code I added to my template&#8217;s sidebar.php:</p>
<div class="code"><pre class="php"><ol><li class="li1"><div class="de1"><span class="co1">// Get the id of the current post so we can give it a &quot;current&quot; class later.</span></div></li><li class="li1"><div class="de1"><span class="re0">$postid</span> = <span class="re0">$post</span>-&gt;<span class="me1">ID</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Arguments for getting all the categories</span></div></li><li class="li1"><div class="de1"><span class="re0">$args</span> = <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1"><span class="st0">'show_option_all'</span> &nbsp; &nbsp;=&gt; <span class="st0">''</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'orderby'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; <span class="st0">'name'</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'order'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; <span class="st0">'ASC'</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'show_last_update'</span> &nbsp; =&gt; <span class="nu0">0</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'style'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; <span class="st0">'list'</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'show_count'</span> &nbsp; &nbsp; &nbsp; &nbsp; =&gt; <span class="nu0">0</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'hide_empty'</span> &nbsp; &nbsp; &nbsp; &nbsp; =&gt; <span class="nu0">1</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'use_desc_for_title'</span> =&gt; <span class="nu0">0</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'child_of'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; <span class="nu0">0</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'feed'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; <span class="st0">''</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'feed_type'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; <span class="st0">''</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'feed_image'</span> &nbsp; &nbsp; &nbsp; &nbsp; =&gt; <span class="st0">''</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'exclude'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; <span class="st0">''</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'exclude_tree'</span> &nbsp; &nbsp; &nbsp; =&gt; <span class="st0">''</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'include'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; <span class="st0">''</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'hierarchical'</span> &nbsp; &nbsp; &nbsp; =&gt; <span class="kw2">true</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'title_li'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; <span class="st0">''</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'number'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; <span class="kw2">NULL</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'echo'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; <span class="nu0">0</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'depth'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; <span class="nu0">0</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'current_category'</span> &nbsp; =&gt; <span class="nu0">1</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'pad_counts'</span> &nbsp; &nbsp; &nbsp; &nbsp; =&gt; <span class="nu0">0</span>,</div></li><li class="li1"><div class="de1"><span class="st0">'taxonomy'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; <span class="st0">'category'</span> <span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Get all categories (in a silly html menu)</span></div></li><li class="li1"><div class="de1"><span class="re0">$catmenu</span> = wp_list_categories<span class="br0">&#40;</span> <span class="re0">$args</span> <span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Split the menu to get all categories sepparately</span></div></li><li class="li1"><div class="de1"><span class="re0">$cats</span> = <span class="kw3">split</span><span class="br0">&#40;</span><span class="st0">'</span></div></li><li class="li1"><div class="de1"><span class="st0">&lt;li class=&quot;cat-item cat-item-'</span>, <span class="re0">$catmenu</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="re0">$catmenu</span> = <span class="st0">''</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Loop through the categories.</span></div></li><li class="li1"><div class="de1"><span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$cats</span> <span class="kw1">as</span> <span class="re0">$key</span> =&gt; <span class="re0">$cat</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$current</span> = <span class="st0">''</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Get the code and html sepparately</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">list</span><span class="br0">&#40;</span><span class="re0">$id</span>, <span class="re0">$code</span><span class="br0">&#41;</span> = <span class="kw3">split</span><span class="br0">&#40;</span><span class="st0">'&quot;&gt;&lt;a'</span>, <span class="re0">$cat</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Make sure they're there.</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$id</span> &amp;&amp; <span class="re0">$code</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// If this is the current category, then remove that text and remember for later</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">strpos</span><span class="br0">&#40;</span><span class="re0">$id</span>, <span class="st0">' current-cat'</span><span class="br0">&#41;</span> !== <span class="kw2">False</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$current</span> = <span class="st0">' current-cat'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$id</span> = <span class="kw3">str_replace</span><span class="br0">&#40;</span><span class="st0">' current-cat'</span>, <span class="st0">''</span>, <span class="re0">$id</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// In case we got an id... and this category doesn't have sub categories.</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">is_numeric</span><span class="br0">&#40;</span><span class="re0">$id</span><span class="br0">&#41;</span> &amp;&amp; <span class="kw3">strpos</span><span class="br0">&#40;</span><span class="re0">$code</span>, <span class="st0">&quot;</span></div></li><li class="li1"><div class="de1"><span class="st0">&lt;ul class='children'&gt;&quot;</span><span class="br0">&#41;</span> === <span class="kw2">False</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Arguments for getting the categorie's posts</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$args</span> = <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">'post_type'</span> =&gt; <span class="st0">'post'</span>,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">'post_status'</span> =&gt; <span class="st0">'published'</span>,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">'numberposts'</span> =&gt; <span class="nu0">-1</span>,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">'category'</span> =&gt; <span class="re0">$id</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span>; </div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Get the posts</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$myposts</span> = get_posts<span class="br0">&#40;</span><span class="re0">$args</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// If we got any posts returned</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">count</span><span class="br0">&#40;</span><span class="re0">$myposts</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Start a nice html post list</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$postlist</span> = <span class="st0">&quot;<span class="es0">\n</span>&quot;</span>.<span class="st0">'</span></div></li><li class="li1"><div class="de1"><span class="st0">&lt;ul class=&quot;posts&quot;&gt;'</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Check east post to see if it's current and add to the html</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$myposts</span> <span class="kw1">as</span> <span class="re0">$post</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$current_post</span> = <span class="st0">''</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &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">$postid</span> == <span class="re0">$post</span>-&gt;<span class="me1">ID</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$current_post</span> = <span class="st0">' class=&quot;current-post&quot;'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$current</span> = <span class="st0">' current-cat'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$postlist</span> .= <span class="st0">&quot;<span class="es0">\n</span>&quot;</span>.<span class="st0">'</span></div></li><li class="li1"><div class="de1"><span class="st0">&lt;li'</span>.<span class="re0">$current_post</span>.<span class="st0">'&gt;&lt;a href=&quot;'</span>.get_permalink<span class="br0">&#40;</span><span class="re0">$post</span>-&gt;<span class="me1">ID</span><span class="br0">&#41;</span>.<span class="st0">'&quot;&gt;'</span>.<span class="re0">$post</span>-&gt;<span class="me1">post_title</span>.<span class="st0">'&lt;/a&gt;&lt;/li&gt;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="st0">'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$postlist</span> .= <span class="st0">&quot;<span class="es0">\n</span>&quot;</span>.<span class="st0">'&lt;/ul&gt;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="st0">'</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Add the post list to the code of the current category</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$code</span> = <span class="kw3">str_replace</span><span class="br0">&#40;</span><span class="st0">'&lt;/a&gt;'</span>, <span class="st0">'&lt;/a&gt;'</span>.<span class="re0">$postlist</span>, <span class="re0">$code</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Put everything that was split before back together</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$cat</span> = <span class="st0">'</span></div></li><li class="li1"><div class="de1"><span class="st0">&lt;li class=&quot;cat-item cat-item-'</span>.<span class="re0">$id</span>.<span class="re0">$current</span>.<span class="st0">'&quot;&gt;&lt;a'</span>.<span class="re0">$code</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Add back into the complete category menu</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$catmenu</span> .= <span class="re0">$cat</span>;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Print out the category menu</span></div></li><li class="li1"><div class="de1"><span class="kw3">echo</span> <span class="st0">'</span></div></li><li class="li1"><div class="de1"><span class="st0">&lt;li id=&quot;menu&quot;&gt;</span></div></li><li class="li1"><div class="de1"><span class="st0">&lt;ul&gt;'</span>.<span class="re0">$catmenu</span>.<span class="st0">'&lt;/ul&gt;</span></div></li><li class="li1"><div class="de1"><span class="st0">&lt;/li&gt;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="st0">'</span>;</div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean php code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;">// Get the id of the current post so we can give it a "current" class later.
$postid = $post->ID;

// Arguments for getting all the categories
$args = array(
'show_option_all'    => '',
'orderby'            => 'name',
'order'              => 'ASC',
'show_last_update'   => 0,
'style'              => 'list',
'show_count'         => 0,
'hide_empty'         => 1,
'use_desc_for_title' => 0,
'child_of'           => 0,
'feed'               => '',
'feed_type'          => '',
'feed_image'         => '',
'exclude'            => '',
'exclude_tree'       => '',
'include'            => '',
'hierarchical'       => true,
'title_li'           => '',
'number'             => NULL,
'echo'               => 0,
'depth'              => 0,
'current_category'   => 1,
'pad_counts'         => 0,
'taxonomy'           => 'category' );

// Get all categories (in a silly html menu)
$catmenu = wp_list_categories( $args );

// Split the menu to get all categories sepparately
$cats = split('
<li class="cat-item cat-item-', $catmenu);

$catmenu = '';

// Loop through the categories.
foreach($cats as $key => $cat){

	$current = '';

	// Get the code and html sepparately
	list($id, $code) = split('"><a', $cat);

	// Make sure they're there.
	if($id &#038;&#038; $code){

		// If this is the current category, then remove that text and remember for later
		if(strpos($id, ' current-cat') !== False){
			$current = ' current-cat';
			$id = str_replace(' current-cat', '', $id);
		}

		// In case we got an id... and this category doesn't have sub categories.
		if(is_numeric($id) &#038;&#038; strpos($code, "
<ul class='children'>") === False){

			// Arguments for getting the categorie's posts
			$args = array(
				'post_type' => 'post',
				'post_status' => 'published',
				'numberposts' => -1,
				'category' => $id
				); 

			// Get the posts
			 $myposts = get_posts($args);

			 // If we got any posts returned
			 if(count($myposts)){

				// Start a nice html post list
				$postlist = "\n".'
<ul class="posts">';

				// Check east post to see if it's current and add to the html
				 foreach($myposts as $post) {
					$current_post = '';
					if($postid == $post->ID){
						$current_post = ' class="current-post"';
						$current = ' current-cat';
					}
					$postlist .= "\n".'
<li'.$current_post.'><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></li>

';
				 }

				 $postlist .= "\n".'</ul>

';

				// Add the post list to the code of the current category
				$code = str_replace('</a>', '</a>'.$postlist, $code);

			}

		}

		// Put everything that was split before back together
		$cat = '
<li class="cat-item cat-item-'.$id.$current.'"><a'.$code;

	}

	// Add back into the complete category menu
	$catmenu .= $cat;
}

// Print out the category menu
echo '
<li id="menu">
<ul>'.$catmenu.'</ul>
</li>

';</textarea><pre class="php">// Get the id of the current post so we can give it a "current" class later.
$postid = $post->ID;

// Arguments for getting all the categories
$args = array(
'show_option_all'    => '',
'orderby'            => 'name',
'order'              => 'ASC',
'show_last_update'   => 0,
'style'              => 'list',
'show_count'         => 0,
'hide_empty'         => 1,
'use_desc_for_title' => 0,
'child_of'           => 0,
'feed'               => '',
'feed_type'          => '',
'feed_image'         => '',
'exclude'            => '',
'exclude_tree'       => '',
'include'            => '',
'hierarchical'       => true,
'title_li'           => '',
'number'             => NULL,
'echo'               => 0,
'depth'              => 0,
'current_category'   => 1,
'pad_counts'         => 0,
'taxonomy'           => 'category' );

// Get all categories (in a silly html menu)
$catmenu = wp_list_categories( $args );

// Split the menu to get all categories sepparately
$cats = split('
<li class="cat-item cat-item-', $catmenu);

$catmenu = '';

// Loop through the categories.
foreach($cats as $key => $cat){

	$current = '';

	// Get the code and html sepparately
	list($id, $code) = split('"><a', $cat);

	// Make sure they're there.
	if($id &#038;&#038; $code){

		// If this is the current category, then remove that text and remember for later
		if(strpos($id, ' current-cat') !== False){
			$current = ' current-cat';
			$id = str_replace(' current-cat', '', $id);
		}

		// In case we got an id... and this category doesn't have sub categories.
		if(is_numeric($id) &#038;&#038; strpos($code, "
<ul class='children'>") === False){

			// Arguments for getting the categorie's posts
			$args = array(
				'post_type' => 'post',
				'post_status' => 'published',
				'numberposts' => -1,
				'category' => $id
				); 

			// Get the posts
			 $myposts = get_posts($args);

			 // If we got any posts returned
			 if(count($myposts)){

				// Start a nice html post list
				$postlist = "\n".'
<ul class="posts">';

				// Check east post to see if it's current and add to the html
				 foreach($myposts as $post) {
					$current_post = '';
					if($postid == $post->ID){
						$current_post = ' class="current-post"';
						$current = ' current-cat';
					}
					$postlist .= "\n".'
<li'.$current_post.'><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></li>

';
				 }

				 $postlist .= "\n".'</ul>

';

				// Add the post list to the code of the current category
				$code = str_replace('</a>', '</a>'.$postlist, $code);

			}

		}

		// Put everything that was split before back together
		$cat = '
<li class="cat-item cat-item-'.$id.$current.'"><a'.$code;

	}

	// Add back into the complete category menu
	$catmenu .= $cat;
}

// Print out the category menu
echo '
<li id="menu">
<ul>'.$catmenu.'</ul>
</li>

';</pre>
<p>And here is the javascript code I added to my template&#8217;s header.php:</p>
<div class="code"><pre class="javascript"><ol><li class="li1"><div class="de1"><span class="co1">// Initialise javascript functions using jquery</span></div></li><li class="li1"><div class="de1">jQuery<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">ready</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; initMenu<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Start the menu functionality</span></div></li><li class="li1"><div class="de1"><span class="kw2">function</span> initMenu<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Hide all the submenus by default</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; jQuery<span class="br0">&#40;</span><span class="st0">'#menu ul ul'</span><span class="br0">&#41;</span>.<span class="me1">hide</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Find the current post and make sure all the categories it's in are also &quot;current&quot;, then show their kids.</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; jQuery<span class="br0">&#40;</span><span class="st0">'#menu .current-post'</span><span class="br0">&#41;</span>.<span class="me1">parents</span><span class="br0">&#40;</span><span class="st0">'li[id!=menu]'</span><span class="br0">&#41;</span>.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'current-cat'</span><span class="br0">&#41;</span>.<span class="me1">children</span><span class="br0">&#40;</span><span class="st0">'ul'</span><span class="br0">&#41;</span>.<span class="me1">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Replace the click event of all category menu items except for &quot;news&quot;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// In stead make them fold down and up the sub menu</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; jQuery<span class="br0">&#40;</span><span class="st0">'#menu a'</span><span class="br0">&#41;</span>.<span class="me1">click</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>event<span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; thisItem = jQuery<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; childList = thisItem.<span class="me1">siblings</span><span class="br0">&#40;</span><span class="st0">'ul'</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>childList.<span class="me1">length</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!<span class="br0">&#40;</span>thisItem.<span class="me1">html</span><span class="br0">&#40;</span><span class="br0">&#41;</span> == <span class="st0">'News'</span> &amp;&amp; childList.<span class="kw1">is</span><span class="br0">&#40;</span><span class="st0">':hidden'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; event.<span class="me1">preventDefault</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>childList.<span class="kw1">is</span><span class="br0">&#40;</span><span class="st0">':hidden'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; thisItem.<span class="me1">addClass</span><span class="br0">&#40;</span><span class="st0">'clicked'</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; childList.<span class="me1">slideDown</span><span class="br0">&#40;</span><span class="st0">'fast'</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; jQuery<span class="br0">&#40;</span><span class="st0">'#menu ul:visible'</span><span class="br0">&#41;</span>.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!<span class="br0">&#40;</span>jQuery<span class="br0">&#40;</span><span class="st0">'.clicked'</span>, <span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">length</span> || jQuery<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">siblings</span><span class="br0">&#40;</span><span class="st0">'.clicked'</span><span class="br0">&#41;</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; jQuery<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">slideUp</span><span class="br0">&#40;</span><span class="st0">'fast'</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; thisItem.<span class="me1">removeClass</span><span class="br0">&#40;</span><span class="st0">'clicked'</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &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></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; childList.<span class="me1">slideUp</span><span class="br0">&#40;</span><span class="st0">'fast'</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean javascript code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;">// Initialise javascript functions using jquery
jQuery(document).ready(function(){

	initMenu();

});

// Start the menu functionality
function initMenu(){
	// Hide all the submenus by default
	jQuery('#menu ul ul').hide();

	// Find the current post and make sure all the categories it's in are also "current", then show their kids.
	jQuery('#menu .current-post').parents('li[id!=menu]').addClass('current-cat').children('ul').show();

	// Replace the click event of all category menu items except for "news"
	// In stead make them fold down and up the sub menu
	jQuery('#menu a').click(function(event){

		thisItem = jQuery(this);

		childList = thisItem.siblings('ul');

		if(childList.length){

			if(!(thisItem.html() == 'News' &#038;&#038; childList.is(':hidden'))){

				event.preventDefault();

				if(childList.is(':hidden')){

					thisItem.addClass('clicked');

					childList.slideDown('fast');

					jQuery('#menu ul:visible').each(function(){

						if(!(jQuery('.clicked', this).length || jQuery(this).siblings('.clicked').length)){
							jQuery(this).slideUp('fast');
						}

					});

					thisItem.removeClass('clicked');

				}else{
					childList.slideUp('fast');
				}
			}

		}

	});
}</textarea><pre class="javascript">// Initialise javascript functions using jquery
jQuery(document).ready(function(){

	initMenu();

});

// Start the menu functionality
function initMenu(){
	// Hide all the submenus by default
	jQuery('#menu ul ul').hide();

	// Find the current post and make sure all the categories it's in are also "current", then show their kids.
	jQuery('#menu .current-post').parents('li[id!=menu]').addClass('current-cat').children('ul').show();

	// Replace the click event of all category menu items except for "news"
	// In stead make them fold down and up the sub menu
	jQuery('#menu a').click(function(event){

		thisItem = jQuery(this);

		childList = thisItem.siblings('ul');

		if(childList.length){

			if(!(thisItem.html() == 'News' &#038;&#038; childList.is(':hidden'))){

				event.preventDefault();

				if(childList.is(':hidden')){

					thisItem.addClass('clicked');

					childList.slideDown('fast');

					jQuery('#menu ul:visible').each(function(){

						if(!(jQuery('.clicked', this).length || jQuery(this).siblings('.clicked').length)){
							jQuery(this).slideUp('fast');
						}

					});

					thisItem.removeClass('clicked');

				}else{
					childList.slideUp('fast');
				}
			}

		}

	});
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.macouno.com/2010/05/23/making-a-category-based-menu-with-posts-in-wordpress-2-9-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting python to work on Xampp</title>
		<link>http://www.macouno.com/2010/03/17/getting-python-to-work-on-xampp/</link>
		<comments>http://www.macouno.com/2010/03/17/getting-python-to-work-on-xampp/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 20:21:27 +0000</pubDate>
		<dc:creator>macouno</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.macouno.com/?p=560</guid>
		<description><![CDATA[I spent most of today (Dec 14 2009) messing around trying to get xampp to interpret python scripts. Usually xampp only works with php, at least on my windows system (windows 32 bit vista). But since I&#8217;m developing something for a python server I needed to get it to work. I read a lot, found [...]]]></description>
			<content:encoded><![CDATA[<p>I spent most of today (<em>Dec 14 2009</em>) messing around trying to get <a href="http://www.apachefriends.org/en/xampp.html" target="_blank">xampp</a> to interpret python scripts. Usually xampp only works with php, at least on my windows system (windows 32 bit vista). But since I&#8217;m developing something for a python server I needed to get it to work.</p>
<p>I read a lot, found a heap of documentation about mod_python (mod_python.so), and only after half a day found out that that&#8217;s really not a very nice solution. And I already had python 2.5 installed as well. mod_python seems nice, and has a lot of links to it on google, but it&#8217;s overkill/weird and rarely needed.</p>
<p>So, if you&#8217;re like me, and have python &amp; xampp installed on your system (and your pythonpath set in the environment variables), and need .py files to work&#8230; just do this.</p>
<hr />
<h3>Configuring the server</h3>
<p>In the httpd.conf file for your apache installation (part of xampp) add the following all the way at the bottom. In my case the httpd.conf can be found here: <em>C:\xampp\apache\conf</em></p>
<div class="code"><pre class="text"><ol><li class="li1"><div class="de1">#</div></li><li class="li1"><div class="de1"># For Python</div></li><li class="li1"><div class="de1">#</div></li><li class="li1"><div class="de1">AddHandler cgi-script .py</div></li><li class="li1"><div class="de1">ScriptInterpreterSource Registry-Strict</div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean text code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;">#
# For Python
#
AddHandler cgi-script .py
ScriptInterpreterSource Registry-Strict</textarea><pre class="text">#
# For Python
#
AddHandler cgi-script .py
ScriptInterpreterSource Registry-Strict</pre>
<hr />
<h3 class="text">Configuring the python script</h3>
<p class="text">Then in the top of the python script on your server, it already knows it should be python, but it doesn&#8217;t know yet where the python program is. So as the very first line in your python scripts on the server you have to say where python is installed. In my case that looks like this</p>
<div class="code"><pre class="python"><ol><li class="li1"><div class="de1"><span class="co1">#!C:/Python25/python.exe</span></div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean python code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;">#!C:/Python25/python.exe</textarea><pre class="python">#!C:/Python25/python.exe</pre>
<hr />
<h3>Enabling index.py</h3>
<p>Of course it&#8217;s nice to have index.py files work just like index.php ones as well. So I added index.py to the following bit in the httpd.conf</p>
<div class="code"><pre class="text"><ol><li class="li1"><div class="de1">#</div></li><li class="li1"><div class="de1"># DirectoryIndex: sets the file that Apache will serve if a directory</div></li><li class="li1"><div class="de1"># is requested.</div></li><li class="li1"><div class="de1">#</div></li><li class="li1"><div class="de1">&lt;IfModule dir_module&gt;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; DirectoryIndex index.php index.php4 index.php3 index.cgi index.pl index.html index.htm index.shtml index.phtml index.py</div></li><li class="li1"><div class="de1">&lt;/IfModule&gt;</div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean text code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;">#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
&lt;IfModule dir_module&gt;
    DirectoryIndex index.php index.php4 index.php3 index.cgi index.pl index.html index.htm index.shtml index.phtml index.py
&lt;/IfModule&gt;</textarea><pre class="text">#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
&lt;IfModule dir_module&gt;
    DirectoryIndex index.php index.php4 index.php3 index.cgi index.pl index.html index.htm index.shtml index.phtml index.py
&lt;/IfModule&gt;</pre>
<hr />
<h3>That&#8217;s it</h3>
<p>Now .py files are also interpreted by python on a xampp installed apache server, just like .php. I hope that helps you as much as it dit me, and maybe saves you some time.</p>
<p>Dolf</p>
]]></content:encoded>
			<wfw:commentRss>http://www.macouno.com/2010/03/17/getting-python-to-work-on-xampp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shorten text</title>
		<link>http://www.macouno.com/2010/03/17/shorten-text/</link>
		<comments>http://www.macouno.com/2010/03/17/shorten-text/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:44:10 +0000</pubDate>
		<dc:creator>macouno</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.macouno.com/?p=523</guid>
		<description><![CDATA[This is a small function that shortens a string.It looks if the string is longer than a preset length, and if so cuts the text there.Then it removes the last word from the string (so your string ends neatly at a space), and adds three dots. // Shorten a text if nessecaryfunction shortenText&#40;$txt='', $len=0&#41;&#123;&#160;&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>This is a small function that shortens a string.<br />It looks if the string is longer than a preset length, and if so cuts the text there.<br />Then it removes the last word from the string (so your string ends neatly at a space), and adds three dots.</p>
<div class="code"><pre class="php"><ol><li class="li1"><div class="de1"><span class="co1">// Shorten a text if nessecary</span></div></li><li class="li1"><div class="de1"><span class="kw2">function</span> shortenText<span class="br0">&#40;</span><span class="re0">$txt</span>=<span class="st0">''</span>, <span class="re0">$len</span>=<span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re0">$txt</span><span class="br0">&#41;</span> &gt; <span class="re0">$len</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$txt</span> = <span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$txt</span>, <span class="nu0">0</span>, <span class="re0">$len</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$t</span> = <span class="kw3">split</span><span class="br0">&#40;</span><span class="st0">&quot;[<span class="es0">\n</span><span class="es0">\r</span><span class="es0">\t</span> ]+&quot;</span>, <span class="re0">$txt</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$t</span> = <span class="kw3">array_slice</span><span class="br0">&#40;</span><span class="re0">$t</span>, <span class="nu0">0</span>, <span class="nu0">-1</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$txt</span> = <span class="kw3">join</span><span class="br0">&#40;</span><span class="st0">' '</span>, <span class="re0">$t</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$txt</span> .= <span class="st0">'...'</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$txt</span>;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean php code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;">// Shorten a text if nessecary
function shortenText($txt='', $len=0){

	if(strlen($txt) &gt; $len){

		$txt = substr($txt, 0, $len);

		$t = split(&quot;[&#92;n&#92;r&#92;t ]+&quot;, $txt);
		$t = array_slice($t, 0, -1);
		$txt = join(' ', $t);

		$txt .= '...';

	}

	return $txt;
}</textarea><pre class="php">// Shorten a text if nessecary
function shortenText($txt='', $len=0){

	if(strlen($txt) &gt; $len){

		$txt = substr($txt, 0, $len);

		$t = split(&quot;[&#92;n&#92;r&#92;t ]+&quot;, $txt);
		$t = array_slice($t, 0, -1);
		$txt = join(' ', $t);

		$txt .= '...';

	}

	return $txt;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.macouno.com/2010/03/17/shorten-text/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rot13</title>
		<link>http://www.macouno.com/2010/03/17/rot13/</link>
		<comments>http://www.macouno.com/2010/03/17/rot13/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:42:58 +0000</pubDate>
		<dc:creator>macouno</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.macouno.com/?p=521</guid>
		<description><![CDATA[Basic rot13 function for PHP (remember that this is NOT secure encryption!).It&#8217;s built into php nowadays, but if you have an old version you may not. // Rot 13 function for older php versionsfunction rot13&#40;$text&#41;&#123;&#160; &#160; &#160; &#160; $length = strlen&#40;$text&#41;;&#160; &#160; &#160; &#160; $newtext = '';&#160; &#160; &#160; &#160; &#160;for&#40;$i = 0; $i &#60; [...]]]></description>
			<content:encoded><![CDATA[<p>Basic rot13 function for PHP (remember that this is NOT secure encryption!).<br />It&#8217;s built into php nowadays, but if you have an old version you may not.</p>
<div class="code"><pre class="php"><ol><li class="li1"><div class="de1"><span class="co1">// Rot 13 function for older php versions</span></div></li><li class="li1"><div class="de1"><span class="kw2">function</span> rot13<span class="br0">&#40;</span><span class="re0">$text</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$length</span> = <span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re0">$text</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$newtext</span> = <span class="st0">''</span>;</div></li><li class="li1"><div class="de1">&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; <span class="re0">$length</span>; <span class="re0">$i</span>++<span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$index</span> = <span class="kw3">ord</span><span class="br0">&#40;</span><span class="re0">$text</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// Rotate upper case.</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$index</span> &gt; <span class="nu0">64</span> &amp;&amp; <span class="re0">$index</span> &lt; <span class="nu0">91</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$index</span> += <span class="nu0">13</span>;</div></li><li class="li1"><div class="de1">&nbsp; &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">$index</span> &gt; <span class="nu0">90</span><span class="br0">&#41;</span> <span class="re0">$index</span> -= <span class="nu0">26</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$newtext</span> .= <span class="kw3">chr</span><span class="br0">&#40;</span><span class="re0">$index</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Rotate lower case.</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">elseif</span><span class="br0">&#40;</span><span class="re0">$index</span> &gt; <span class="nu0">96</span> &amp;&amp; <span class="re0">$index</span> &lt; <span class="nu0">123</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$index</span> += <span class="nu0">13</span>;</div></li><li class="li1"><div class="de1">&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">$index</span> &gt; <span class="nu0">122</span><span class="br0">&#41;</span> <span class="re0">$index</span> -= <span class="nu0">26</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$newtext</span> .= <span class="kw3">chr</span><span class="br0">&#40;</span><span class="re0">$index</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span> <span class="re0">$newtext</span> .= <span class="re0">$text</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">return</span> <span class="re0">$newtext</span>;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean php code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;">// Rot 13 function for older php versions
function rot13($text){
	$length = strlen($text);
	$newtext = '';
	 for($i = 0; $i &lt; $length; $i++){
		 $index = ord($text[$i]);
		 // Rotate upper case.
		 if($index &gt; 64 &amp;&amp; $index &lt; 91){
			 $index += 13;
			 if($index &gt; 90) $index -= 26;
			 $newtext .= chr($index);
		// Rotate lower case.
		}elseif($index &gt; 96 &amp;&amp; $index &lt; 123){
			$index += 13;
			if($index &gt; 122) $index -= 26;
			$newtext .= chr($index);
		 }else{ $newtext .= $text[$i]; }
	 }
	 return $newtext;
}</textarea><pre class="php">// Rot 13 function for older php versions
function rot13($text){
	$length = strlen($text);
	$newtext = '';
	 for($i = 0; $i &lt; $length; $i++){
		 $index = ord($text[$i]);
		 // Rotate upper case.
		 if($index &gt; 64 &amp;&amp; $index &lt; 91){
			 $index += 13;
			 if($index &gt; 90) $index -= 26;
			 $newtext .= chr($index);
		// Rotate lower case.
		}elseif($index &gt; 96 &amp;&amp; $index &lt; 123){
			$index += 13;
			if($index &gt; 122) $index -= 26;
			$newtext .= chr($index);
		 }else{ $newtext .= $text[$i]; }
	 }
	 return $newtext;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.macouno.com/2010/03/17/rot13/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make a random string</title>
		<link>http://www.macouno.com/2010/03/17/make-a-random-string/</link>
		<comments>http://www.macouno.com/2010/03/17/make-a-random-string/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:41:56 +0000</pubDate>
		<dc:creator>macouno</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.macouno.com/?p=519</guid>
		<description><![CDATA[This is a tiny function that makes a random string of predefined length.It does not use letters and numbers that could be confusing, like O and 0. // Make a random stringfunction makeRandomString&#40;$length&#41;&#123;&#160; &#160; &#160; &#160; $str = array&#40;'a', 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'w', [...]]]></description>
			<content:encoded><![CDATA[<p>This is a tiny function that makes a random string of predefined length.<br />It does not use letters and numbers that could be confusing, like O and 0.</p>
<div class="code"><pre class="php"><ol><li class="li1"><div class="de1"><span class="co1">// Make a random string</span></div></li><li class="li1"><div class="de1"><span class="kw2">function</span> makeRandomString<span class="br0">&#40;</span><span class="re0">$length</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$str</span> = <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">'a'</span>, <span class="st0">'b'</span>, <span class="st0">'c'</span>, <span class="st0">'d'</span>, <span class="st0">'f'</span>, <span class="st0">'g'</span>, <span class="st0">'h'</span>, <span class="st0">'j'</span>, <span class="st0">'k'</span>, <span class="st0">'m'</span>, <span class="st0">'n'</span>, <span class="st0">'p'</span>, <span class="st0">'q'</span>, <span class="st0">'r'</span>, <span class="st0">'s'</span>, <span class="st0">'t'</span>, <span class="st0">'w'</span>, <span class="st0">'x'</span>, <span class="st0">'y'</span>, <span class="st0">'z'</span>, <span class="st0">'A'</span>, <span class="st0">'B'</span>, <span class="st0">'C'</span>, <span class="st0">'D'</span>, <span class="st0">'E'</span>, <span class="st0">'F'</span>, <span class="st0">'G'</span>, <span class="st0">'H'</span>, <span class="st0">'J'</span>, <span class="st0">'K'</span>, <span class="st0">'M'</span>, <span class="st0">'N'</span>, <span class="st0">'P'</span>, <span class="st0">'Q'</span>, <span class="st0">'R'</span>, <span class="st0">'S'</span>, <span class="st0">'T'</span>, <span class="st0">'W'</span>, <span class="st0">'X'</span>, <span class="st0">'Y'</span>, <span class="st0">'Z'</span>, <span class="st0">'2'</span>, <span class="st0">'4'</span>, <span class="st0">'5'</span>, <span class="st0">'6'</span>, <span class="st0">'7'</span>, <span class="st0">'8'</span>, <span class="st0">'9'</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$nkeys</span> = <span class="kw3">array_rand</span><span class="br0">&#40;</span><span class="re0">$str</span>, <span class="re0">$length</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$nstr</span> = <span class="st0">''</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$nkeys</span> <span class="kw1">as</span> <span class="re0">$key</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="re0">$nstr</span> .= <span class="re0">$str</span><span class="br0">&#91;</span><span class="re0">$key</span><span class="br0">&#93;</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$nstr</span>;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean php code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;">// Make a random string
function makeRandomString($length){
	$str = array('a', 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'W', 'X', 'Y', 'Z', '2', '4', '5', '6', '7', '8', '9');
	$nkeys = array_rand($str, $length);
	$nstr = '';
	foreach($nkeys as $key){ $nstr .= $str[$key]; }
	return $nstr;
}</textarea><pre class="php">// Make a random string
function makeRandomString($length){
	$str = array('a', 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'W', 'X', 'Y', 'Z', '2', '4', '5', '6', '7', '8', '9');
	$nkeys = array_rand($str, $length);
	$nstr = '';
	foreach($nkeys as $key){ $nstr .= $str[$key]; }
	return $nstr;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.macouno.com/2010/03/17/make-a-random-string/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make image version</title>
		<link>http://www.macouno.com/2010/03/17/make-image-version/</link>
		<comments>http://www.macouno.com/2010/03/17/make-image-version/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:40:02 +0000</pubDate>
		<dc:creator>macouno</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.macouno.com/?p=517</guid>
		<description><![CDATA[This is a function I use to make multiple versions such as thumbnails of uploaded images.There&#8217;s three methods for resizing available in it (mask, fit &#38; limit). // Function for making a new resized copy of a file// mask makes the shortest edge match the mask, so it will be bigger than the mask, always [...]]]></description>
			<content:encoded><![CDATA[<p>This is a function I use to make multiple versions such as thumbnails of uploaded images.<br />There&#8217;s three methods for resizing available in it (mask, fit &amp; limit).</p>
<div class="code"><pre class="php"><ol><li class="li1"><div class="de1"><span class="co1">// Function for making a new resized copy of a file</span></div></li><li class="li1"><div class="de1"><span class="co1">// mask makes the shortest edge match the mask, so it will be bigger than the mask, always resizes!</span></div></li><li class="li1"><div class="de1"><span class="co1">// fit makes the longest edge match, always resizes!</span></div></li><li class="li1"><div class="de1"><span class="co1">// limit makes the image fit, but won't stretch if it's smaller.</span></div></li><li class="li1"><div class="de1"><span class="kw2">function</span> makeImageVersion<span class="br0">&#40;</span><span class="re0">$newWidth</span>, <span class="re0">$newHeight</span>, <span class="re0">$filePath</span>, <span class="re0">$newName</span>, <span class="re0">$fileExtension</span>, <span class="re0">$method</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Find out the original size of the image</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">list</span><span class="br0">&#40;</span><span class="re0">$wO</span>, <span class="re0">$hO</span><span class="br0">&#41;</span> = <span class="kw3">getimagesize</span><span class="br0">&#40;</span><span class="re0">$filePath</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Get the ratios it would take to resize</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$wR</span> = <span class="re0">$newWidth</span> / <span class="re0">$wO</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$hR</span> = <span class="re0">$newHeight</span> / <span class="re0">$hO</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Figure out which ratio we need</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">switch</span><span class="br0">&#40;</span><span class="re0">$method</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">'mask'</span>:</div></li><li class="li1"><div class="de1">&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">$wR</span> &gt; <span class="re0">$hR</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="re0">$ratio</span> = <span class="re0">$wR</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><span class="br0">&#123;</span> <span class="re0">$ratio</span> = <span class="re0">$hR</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">'limit'</span>:</div></li><li class="li1"><div class="de1">&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">$wR</span> &lt; <span class="nu0">1</span> &amp;&amp; <span class="re0">$wR</span> &lt; <span class="re0">$hR</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="re0">$ratio</span> = <span class="re0">$wR</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">elseif</span><span class="br0">&#40;</span><span class="re0">$hR</span> &lt; <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="re0">$ratio</span> = <span class="re0">$hR</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><span class="br0">&#123;</span> <span class="re0">$ratio</span> = <span class="nu0">1</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">'fit'</span>:</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">default</span>:</div></li><li class="li1"><div class="de1">&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">$wR</span> &gt; <span class="re0">$hR</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="re0">$ratio</span> = <span class="re0">$hR</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><span class="br0">&#123;</span> <span class="re0">$ratio</span> = <span class="re0">$wR</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$wN</span> = <span class="kw3">round</span><span class="br0">&#40;</span><span class="re0">$wO</span> * <span class="re0">$ratio</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$hN</span> = <span class="kw3">round</span><span class="br0">&#40;</span><span class="re0">$hO</span> * <span class="re0">$ratio</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$iP</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$wN</span>, <span class="re0">$hN</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; imageAlphaBlending<span class="br0">&#40;</span><span class="re0">$iP</span>, <span class="kw2">false</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; imageSaveAlpha<span class="br0">&#40;</span><span class="re0">$iP</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$fileExtension</span> == <span class="st0">'jpg'</span><span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="re0">$iI</span> = imagecreatefromjpeg<span class="br0">&#40;</span><span class="re0">$filePath</span><span class="br0">&#41;</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">elseif</span><span class="br0">&#40;</span><span class="re0">$fileExtension</span> == <span class="st0">'png'</span><span class="br0">&#41;</span><span class="br0">&#123;</span>&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$iI</span> = imagecreatefrompng<span class="br0">&#40;</span><span class="re0">$filePath</span><span class="br0">&#41;</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><span class="br0">&#123;</span> <span class="re0">$iI</span> = imagecreatefromgif<span class="br0">&#40;</span><span class="re0">$filePath</span><span class="br0">&#41;</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; imagecopyresampled<span class="br0">&#40;</span><span class="re0">$iP</span>, <span class="re0">$iI</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$wN</span>, <span class="re0">$hN</span>, <span class="re0">$wO</span>, <span class="re0">$hO</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$fileExtension</span> == <span class="st0">'jpg'</span><span class="br0">&#41;</span><span class="br0">&#123;</span> imagejpeg<span class="br0">&#40;</span><span class="re0">$iP</span>, <span class="re0">$newName</span>, <span class="nu0">90</span><span class="br0">&#41;</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">elseif</span><span class="br0">&#40;</span><span class="re0">$fileExtension</span> == <span class="st0">'png'</span><span class="br0">&#41;</span><span class="br0">&#123;</span> imagepng<span class="br0">&#40;</span><span class="re0">$iP</span>, <span class="re0">$newName</span><span class="br0">&#41;</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><span class="br0">&#123;</span> imagegif<span class="br0">&#40;</span><span class="re0">$iP</span>, <span class="re0">$newName</span><span class="br0">&#41;</span>; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean php code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;">// Function for making a new resized copy of a file
// mask makes the shortest edge match the mask, so it will be bigger than the mask, always resizes!
// fit makes the longest edge match, always resizes!
// limit makes the image fit, but won't stretch if it's smaller.
function makeImageVersion($newWidth, $newHeight, $filePath, $newName, $fileExtension, $method){

	// Find out the original size of the image
	list($wO, $hO) = getimagesize($filePath);

	// Get the ratios it would take to resize
	$wR = $newWidth / $wO;
	$hR = $newHeight / $hO;

	// Figure out which ratio we need
	switch($method){
		case 'mask':
			if($wR &gt; $hR){ $ratio = $wR; }
			else{ $ratio = $hR; }
			break;
		case 'limit':
			if($wR &lt; 1 &amp;&amp; $wR &lt; $hR){ $ratio = $wR; }
			elseif($hR &lt; 1){ $ratio = $hR; }
			else{ $ratio = 1; }
			break;
		case 'fit':
		default:
			if($wR &gt; $hR){ $ratio = $hR; }
			else{ $ratio = $wR; }
			break;
	}

	$wN = round($wO * $ratio);
	$hN = round($hO * $ratio);

	$iP = imagecreatetruecolor($wN, $hN);
	imageAlphaBlending($iP, false);
	imageSaveAlpha($iP, true);

	if($fileExtension == 'jpg'){ $iI = imagecreatefromjpeg($filePath); }
	elseif($fileExtension == 'png'){	$iI = imagecreatefrompng($filePath); }
	else{ $iI = imagecreatefromgif($filePath); }

	imagecopyresampled($iP, $iI, 0, 0, 0, 0, $wN, $hN, $wO, $hO);

	if($fileExtension == 'jpg'){ imagejpeg($iP, $newName, 90); }
	elseif($fileExtension == 'png'){ imagepng($iP, $newName); }
	else{ imagegif($iP, $newName); }
}</textarea><pre class="php">// Function for making a new resized copy of a file
// mask makes the shortest edge match the mask, so it will be bigger than the mask, always resizes!
// fit makes the longest edge match, always resizes!
// limit makes the image fit, but won't stretch if it's smaller.
function makeImageVersion($newWidth, $newHeight, $filePath, $newName, $fileExtension, $method){

	// Find out the original size of the image
	list($wO, $hO) = getimagesize($filePath);

	// Get the ratios it would take to resize
	$wR = $newWidth / $wO;
	$hR = $newHeight / $hO;

	// Figure out which ratio we need
	switch($method){
		case 'mask':
			if($wR &gt; $hR){ $ratio = $wR; }
			else{ $ratio = $hR; }
			break;
		case 'limit':
			if($wR &lt; 1 &amp;&amp; $wR &lt; $hR){ $ratio = $wR; }
			elseif($hR &lt; 1){ $ratio = $hR; }
			else{ $ratio = 1; }
			break;
		case 'fit':
		default:
			if($wR &gt; $hR){ $ratio = $hR; }
			else{ $ratio = $wR; }
			break;
	}

	$wN = round($wO * $ratio);
	$hN = round($hO * $ratio);

	$iP = imagecreatetruecolor($wN, $hN);
	imageAlphaBlending($iP, false);
	imageSaveAlpha($iP, true);

	if($fileExtension == 'jpg'){ $iI = imagecreatefromjpeg($filePath); }
	elseif($fileExtension == 'png'){	$iI = imagecreatefrompng($filePath); }
	else{ $iI = imagecreatefromgif($filePath); }

	imagecopyresampled($iP, $iI, 0, 0, 0, 0, $wN, $hN, $wO, $hO);

	if($fileExtension == 'jpg'){ imagejpeg($iP, $newName, 90); }
	elseif($fileExtension == 'png'){ imagepng($iP, $newName); }
	else{ imagegif($iP, $newName); }
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.macouno.com/2010/03/17/make-image-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>File put contents</title>
		<link>http://www.macouno.com/2010/03/17/file-put-contents/</link>
		<comments>http://www.macouno.com/2010/03/17/file-put-contents/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:38:27 +0000</pubDate>
		<dc:creator>macouno</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.macouno.com/?p=515</guid>
		<description><![CDATA[file_put_contents() is in php nowadays, but if you&#8217;re on an old server you may need your own.This simply checks if the function&#8217;s there, and if not it makes the function. // Replacement for file_put_contents if it doesn't existif&#40;!function_exists&#40;'file_put_contents'&#41;&#41;&#123;&#160; &#160; &#160; &#160; function file_put_contents&#40;$file, $data&#41;&#123;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; $fp = fopen&#40;$file, 'w'&#41;;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>file_put_contents() is in php nowadays, but if you&#8217;re on an old server you may need your own.<br />This simply checks if the function&#8217;s there, and if not it makes the function.</p>
<div class="code"><pre class="php"><ol><li class="li1"><div class="de1"><span class="co1">// Replacement for file_put_contents if it doesn't exist</span></div></li><li class="li1"><div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span>!<span class="kw3">function_exists</span><span class="br0">&#40;</span><span class="st0">'file_put_contents'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">function</span> file_put_contents<span class="br0">&#40;</span><span class="re0">$file</span>, <span class="re0">$data</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$fp</span> = <span class="kw3">fopen</span><span class="br0">&#40;</span><span class="re0">$file</span>, <span class="st0">'w'</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">fwrite</span><span class="br0">&#40;</span><span class="re0">$fp</span>, <span class="re0">$data</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">fclose</span><span class="br0">&#40;</span><span class="re0">$fp</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean php code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;">// Replacement for file_put_contents if it doesn't exist
if(!function_exists('file_put_contents')){
	function file_put_contents($file, $data){
		$fp = fopen($file, 'w');
		fwrite($fp, $data);
		fclose($fp);
	}
}</textarea><pre class="php">// Replacement for file_put_contents if it doesn't exist
if(!function_exists('file_put_contents')){
	function file_put_contents($file, $data){
		$fp = fopen($file, 'w');
		fwrite($fp, $data);
		fclose($fp);
	}
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.macouno.com/2010/03/17/file-put-contents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Check url</title>
		<link>http://www.macouno.com/2010/03/17/check-url/</link>
		<comments>http://www.macouno.com/2010/03/17/check-url/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:36:48 +0000</pubDate>
		<dc:creator>macouno</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.macouno.com/?p=513</guid>
		<description><![CDATA[This is a function that checks to see if a url exists.Not mine btw, but for the life of me I can&#8217;t remember where I got it. // Check if a url existsfunction isValidUrl&#40;$url&#41;&#123;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; $url = @parse_url&#40;$url&#41;;&#160;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; if &#40; ! $url&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>This is a function that checks to see if a url exists.<br />Not mine btw, but for the life of me I can&#8217;t remember where I got it.</p>
<div class="code"><pre class="php"><ol><li class="li1"><div class="de1"><span class="co1">// Check if a url exists</span></div></li><li class="li1"><div class="de1"><span class="kw2">function</span> isValidUrl<span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$url</span> = @<span class="kw3">parse_url</span><span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> ! <span class="re0">$url</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$url</span> = <span class="kw3">array_map</span><span class="br0">&#40;</span><span class="st0">'trim'</span>, <span class="re0">$url</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$url</span><span class="br0">&#91;</span><span class="st0">'port'</span><span class="br0">&#93;</span> = <span class="br0">&#40;</span>!<span class="kw3">isset</span><span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#91;</span><span class="st0">'port'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> ? <span class="nu0">80</span> : <span class="br0">&#40;</span>int<span class="br0">&#41;</span><span class="re0">$url</span><span class="br0">&#91;</span><span class="st0">'port'</span><span class="br0">&#93;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$path</span> = <span class="br0">&#40;</span><span class="kw3">isset</span><span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#91;</span><span class="st0">'path'</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> ? <span class="re0">$url</span><span class="br0">&#91;</span><span class="st0">'path'</span><span class="br0">&#93;</span> : <span class="st0">''</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$path</span> == <span class="st0">''</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$path</span> = <span class="st0">'/'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$path</span> .= <span class="br0">&#40;</span> <span class="kw3">isset</span> <span class="br0">&#40;</span> <span class="re0">$url</span><span class="br0">&#91;</span><span class="st0">'query'</span><span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span> ? <span class="st0">&quot;?$url[query]&quot;</span> : <span class="st0">''</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="kw3">isset</span> <span class="br0">&#40;</span> <span class="re0">$url</span><span class="br0">&#91;</span><span class="st0">'host'</span><span class="br0">&#93;</span> <span class="br0">&#41;</span> AND <span class="re0">$url</span><span class="br0">&#91;</span><span class="st0">'host'</span><span class="br0">&#93;</span> != <span class="kw3">gethostbyname</span> <span class="br0">&#40;</span> <span class="re0">$url</span><span class="br0">&#91;</span><span class="st0">'host'</span><span class="br0">&#93;</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span> <span class="kw2">PHP_VERSION</span> &gt;= <span class="nu0">5</span> <span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$headers</span> = get_headers<span class="br0">&#40;</span><span class="st0">&quot;$url[scheme]://$url[host]:$url[port]$path&quot;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$fp</span> = <span class="kw3">fsockopen</span><span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#91;</span><span class="st0">'host'</span><span class="br0">&#93;</span>, <span class="re0">$url</span><span class="br0">&#91;</span><span class="st0">'port'</span><span class="br0">&#93;</span>, <span class="re0">$errno</span>, <span class="re0">$errstr</span>, <span class="nu0">30</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &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">$fp</span> <span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">fputs</span><span class="br0">&#40;</span><span class="re0">$fp</span>, <span class="st0">&quot;HEAD $path HTTP/1.1<span class="es0">\r</span><span class="es0">\n</span>Host: $url[host]<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$headers</span> = <span class="kw3">fread</span> <span class="br0">&#40;</span> <span class="re0">$fp</span>, <span class="nu0">128</span> <span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">fclose</span> <span class="br0">&#40;</span> <span class="re0">$fp</span> <span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$headers</span> = <span class="br0">&#40;</span> <span class="kw3">is_array</span> <span class="br0">&#40;</span> <span class="re0">$headers</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span> ? <span class="kw3">implode</span> <span class="br0">&#40;</span> <span class="st0">&quot;<span class="es0">\n</span>&quot;</span>, <span class="re0">$headers</span> <span class="br0">&#41;</span> : <span class="re0">$headers</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="br0">&#40;</span> bool <span class="br0">&#41;</span> <span class="kw3">preg_match</span> <span class="br0">&#40;</span> <span class="st0">'#^HTTP/.*<span class="es0">\s</span>+[(200|301|302)]+<span class="es0">\s</span>#i'</span>, <span class="re0">$headers</span> <span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span>;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean php code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;">// Check if a url exists
function isValidUrl($url){
		$url = @parse_url($url);

		if ( ! $url) {
			return false;
		}

		$url = array_map('trim', $url);
		$url['port'] = (!isset($url['port'])) ? 80 : (int)$url['port'];
		$path = (isset($url['path'])) ? $url['path'] : '';

		if ($path == '')
		{
			$path = '/';
		}

		$path .= ( isset ( $url['query'] ) ) ? "?$url[query]" : '';

		if ( isset ( $url['host'] ) AND $url['host'] != gethostbyname ( $url['host'] ) )
		{
			if ( PHP_VERSION >= 5 )
			{
				$headers = get_headers("$url[scheme]://$url[host]:$url[port]$path");
			}
			else
			{
				$fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 30);

				if ( ! $fp )
				{
					return false;
				}
				fputs($fp, "HEAD $path HTTP/1.1\r\nHost: $url[host]\r\n\r\n");
				$headers = fread ( $fp, 128 );
				fclose ( $fp );
			}
			$headers = ( is_array ( $headers ) ) ? implode ( "\n", $headers ) : $headers;
			return ( bool ) preg_match ( '#^HTTP/.*\s+[(200|301|302)]+\s#i', $headers );
		}
		return false;
}</textarea><pre class="php">// Check if a url exists
function isValidUrl($url){
		$url = @parse_url($url);

		if ( ! $url) {
			return false;
		}

		$url = array_map('trim', $url);
		$url['port'] = (!isset($url['port'])) ? 80 : (int)$url['port'];
		$path = (isset($url['path'])) ? $url['path'] : '';

		if ($path == '')
		{
			$path = '/';
		}

		$path .= ( isset ( $url['query'] ) ) ? "?$url[query]" : '';

		if ( isset ( $url['host'] ) AND $url['host'] != gethostbyname ( $url['host'] ) )
		{
			if ( PHP_VERSION >= 5 )
			{
				$headers = get_headers("$url[scheme]://$url[host]:$url[port]$path");
			}
			else
			{
				$fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 30);

				if ( ! $fp )
				{
					return false;
				}
				fputs($fp, "HEAD $path HTTP/1.1\r\nHost: $url[host]\r\n\r\n");
				$headers = fread ( $fp, 128 );
				fclose ( $fp );
			}
			$headers = ( is_array ( $headers ) ) ? implode ( "\n", $headers ) : $headers;
			return ( bool ) preg_match ( '#^HTTP/.*\s+[(200|301|302)]+\s#i', $headers );
		}
		return false;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.macouno.com/2010/03/17/check-url/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make a safe url</title>
		<link>http://www.macouno.com/2010/03/17/make-a-safe-url-2/</link>
		<comments>http://www.macouno.com/2010/03/17/make-a-safe-url-2/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:21:42 +0000</pubDate>
		<dc:creator>macouno</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.macouno.com/?p=484</guid>
		<description><![CDATA[This is a function that checks a string and makes it work nicely for friendly urls // Make sure a url string is nicely formattedfunction makeSafeUrl&#40;$myUrl, $allowSpace=0, $allowCase=0, $allowDot=0&#41;&#123;&#160; &#160; &#160; &#160; $sSafe = 'abcdefghijklmnopqrstuvwxyz1234567890-_';&#160; &#160; &#160; &#160; $disallowed = array&#40;&#41;;&#160; &#160; &#160; &#160; $disallowed&#91;'c'&#93; = 'ç';&#160; &#160; &#160; &#160; $disallowed&#91;'n'&#93; = 'ñ';&#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>This is a function that checks a string and makes it work nicely for friendly urls</p>
<div class="code"><pre class="php"><ol><li class="li1"><div class="de1"> <span class="co1">// Make sure a url string is nicely formatted</span></div></li><li class="li1"><div class="de1"><span class="kw2">function</span> makeSafeUrl<span class="br0">&#40;</span><span class="re0">$myUrl</span>, <span class="re0">$allowSpace</span>=<span class="nu0">0</span>, <span class="re0">$allowCase</span>=<span class="nu0">0</span>, <span class="re0">$allowDot</span>=<span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sSafe</span> = <span class="st0">'abcdefghijklmnopqrstuvwxyz1234567890-_'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span> = <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'c'</span><span class="br0">&#93;</span> = <span class="st0">'ç'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'n'</span><span class="br0">&#93;</span> = <span class="st0">'ñ'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'y'</span><span class="br0">&#93;</span> = <span class="st0">'ýÿ'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'e'</span><span class="br0">&#93;</span> = <span class="st0">'èéêë'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'a'</span><span class="br0">&#93;</span> = <span class="st0">'àáâãäå'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'o'</span><span class="br0">&#93;</span> = <span class="st0">'ðóòôõöø'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'u'</span><span class="br0">&#93;</span> = <span class="st0">'ùúûü'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'i'</span><span class="br0">&#93;</span> = <span class="st0">'ìíîï'</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!<span class="re0">$allowSpace</span><span class="br0">&#41;</span> <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'-'</span><span class="br0">&#93;</span> = <span class="st0">' '</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$allowSpace</span><span class="br0">&#41;</span> <span class="re0">$sSafe</span> .= <span class="st0">' '</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!<span class="re0">$allowDot</span><span class="br0">&#41;</span> <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'-'</span><span class="br0">&#93;</span> = <span class="st0">'.'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$allowDot</span><span class="br0">&#41;</span> <span class="re0">$sSafe</span> .= <span class="st0">'.'</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$allowCase</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sSafe</span> .= <span class="st0">'ABCDEFGHIJKLMNOPQRSTUVWXYZ'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'C'</span><span class="br0">&#93;</span> = <span class="st0">'Ç'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'N'</span><span class="br0">&#93;</span> = <span class="st0">'Ñ'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'Y'</span><span class="br0">&#93;</span> = <span class="st0">'ÝŸ'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'E'</span><span class="br0">&#93;</span> = <span class="st0">'ÈÉÊË'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'A'</span><span class="br0">&#93;</span> = <span class="st0">'ÀÁÂÃÄÅ'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'O'</span><span class="br0">&#93;</span> = <span class="st0">'ÐÓÒÔÕÖØ'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'U'</span><span class="br0">&#93;</span> = <span class="st0">'ÙÚÛÜ'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$disallowed</span><span class="br0">&#91;</span><span class="st0">'I'</span><span class="br0">&#93;</span> = <span class="st0">'ÌÍÎÏ'</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$myUrl</span> = <span class="kw3">strtolower</span><span class="br0">&#40;</span><span class="re0">$myUrl</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$newString</span> = <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&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">$myUrl</span><span class="br0">&#41;</span>; <span class="re0">$i</span>++<span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$thisChar</span> = <span class="re0">$myUrl</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">stristr</span><span class="br0">&#40;</span><span class="re0">$sSafe</span>, <span class="re0">$thisChar</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$newString</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span> = <span class="re0">$thisChar</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$disallowed</span> <span class="kw1">as</span> <span class="re0">$key</span> =&gt; <span class="re0">$var</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">stristr</span><span class="br0">&#40;</span><span class="re0">$var</span>, <span class="re0">$thisChar</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$newString</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span> = <span class="re0">$key</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw3">implode</span><span class="br0">&#40;</span><span class="st0">''</span>, <span class="re0">$newString</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean php code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;"> // Make sure a url string is nicely formatted
function makeSafeUrl($myUrl, $allowSpace=0, $allowCase=0, $allowDot=0){
	$sSafe = 'abcdefghijklmnopqrstuvwxyz1234567890-_';
	$disallowed = array();
	$disallowed['c'] = 'ç';
	$disallowed['n'] = 'ñ';
	$disallowed['y'] = 'ýÿ';
	$disallowed['e'] = 'èéêë';
	$disallowed['a'] = 'àáâãäå';
	$disallowed['o'] = 'ðóòôõöø';
	$disallowed['u'] = 'ùúûü';
	$disallowed['i'] = 'ìíîï';

	if(!$allowSpace) $disallowed['-'] = ' ';
	if($allowSpace) $sSafe .= ' ';

	if(!$allowDot) $disallowed['-'] = '.';
	if($allowDot) $sSafe .= '.';

	if($allowCase){
		$sSafe .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
		$disallowed['C'] = 'Ç';
		$disallowed['N'] = 'Ñ';
		$disallowed['Y'] = 'ÝŸ';
		$disallowed['E'] = 'ÈÉÊË';
		$disallowed['A'] = 'ÀÁÂÃÄÅ';
		$disallowed['O'] = 'ÐÓÒÔÕÖØ';
		$disallowed['U'] = 'ÙÚÛÜ';
		$disallowed['I'] = 'ÌÍÎÏ';
	}else{
		$myUrl = strtolower($myUrl);
	}

	$newString = array();

	for($i = 0; $i<strlen($myUrl); $i++){
		$thisChar = $myUrl[$i];
		if(stristr($sSafe, $thisChar)){
			$newString[$i] = $thisChar;
		}else{
			foreach($disallowed as $key => $var){
				if(stristr($var, $thisChar)){
					$newString[$i] = $key;
				}
			}
		}
	}
	return implode('', $newString);
}</textarea><pre class="php"> // Make sure a url string is nicely formatted
function makeSafeUrl($myUrl, $allowSpace=0, $allowCase=0, $allowDot=0){
	$sSafe = 'abcdefghijklmnopqrstuvwxyz1234567890-_';
	$disallowed = array();
	$disallowed['c'] = 'ç';
	$disallowed['n'] = 'ñ';
	$disallowed['y'] = 'ýÿ';
	$disallowed['e'] = 'èéêë';
	$disallowed['a'] = 'àáâãäå';
	$disallowed['o'] = 'ðóòôõöø';
	$disallowed['u'] = 'ùúûü';
	$disallowed['i'] = 'ìíîï';

	if(!$allowSpace) $disallowed['-'] = ' ';
	if($allowSpace) $sSafe .= ' ';

	if(!$allowDot) $disallowed['-'] = '.';
	if($allowDot) $sSafe .= '.';

	if($allowCase){
		$sSafe .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
		$disallowed['C'] = 'Ç';
		$disallowed['N'] = 'Ñ';
		$disallowed['Y'] = 'ÝŸ';
		$disallowed['E'] = 'ÈÉÊË';
		$disallowed['A'] = 'ÀÁÂÃÄÅ';
		$disallowed['O'] = 'ÐÓÒÔÕÖØ';
		$disallowed['U'] = 'ÙÚÛÜ';
		$disallowed['I'] = 'ÌÍÎÏ';
	}else{
		$myUrl = strtolower($myUrl);
	}

	$newString = array();

	for($i = 0; $i<strlen($myUrl); $i++){
		$thisChar = $myUrl[$i];
		if(stristr($sSafe, $thisChar)){
			$newString[$i] = $thisChar;
		}else{
			foreach($disallowed as $key => $var){
				if(stristr($var, $thisChar)){
					$newString[$i] = $key;
				}
			}
		}
	}
	return implode('', $newString);
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.macouno.com/2010/03/17/make-a-safe-url-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JQuery geshi</title>
		<link>http://www.macouno.com/2010/03/17/jquery-geshi/</link>
		<comments>http://www.macouno.com/2010/03/17/jquery-geshi/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:03:54 +0000</pubDate>
		<dc:creator>macouno</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Web development]]></category>

		<guid isPermaLink="false">http://www.macouno.com/?p=459</guid>
		<description><![CDATA[Code highlighting using ajax with jquery and geshi $&#40;document&#41;.ready&#40;function&#40;&#41;&#123;&#160;&#160; &#160; &#160; &#160; // Initialise highlighting&#160; &#160; &#160; &#160; if&#40;$&#40;'pre'&#41;.length&#41;&#123;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; $&#40;'pre'&#41;.each&#40;function&#40;&#41;&#123;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; highLight&#40;$&#40;this&#41;&#41;;&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#125;&#41;;&#160; &#160; &#160; &#160; &#125;&#160;&#125;&#41;;&#160;// Highlight itemfunction highLight&#40;thisItem&#41;&#123;&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Code highlighting using ajax with jquery and geshi</p>
<div class="code"><pre class="javascript"><ol><li class="li1"><div class="de1">$<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">ready</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Initialise highlighting</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>$<span class="br0">&#40;</span><span class="st0">'pre'</span><span class="br0">&#41;</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">'pre'</span><span class="br0">&#41;</span>.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; highLight<span class="br0">&#40;</span>$<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Highlight item</span></div></li><li class="li1"><div class="de1"><span class="kw2">function</span> highLight<span class="br0">&#40;</span>thisItem<span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; snippet &nbsp;= thisItem.<span class="me1">html</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; snippet = snippet.<span class="me1">replace</span><span class="br0">&#40;</span><span class="re0">/&amp;amp;amp;/ig</span>, escape<span class="br0">&#40;</span><span class="st0">'&amp;'</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; snippet = snippet.<span class="me1">replace</span><span class="br0">&#40;</span><span class="re0">/&amp;lt;/ig</span>, <span class="st0">'&lt;'</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; snippet = snippet.<span class="me1">replace</span><span class="br0">&#40;</span><span class="re0">/&amp;gt;/ig</span>, <span class="st0">'&gt;'</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; language = thisItem.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">'class'</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; $.<span class="me1">ajax</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type: <span class="st0">&quot;POST&quot;</span>,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; url: <span class="st0">'/scripts/highlight.php'</span>,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data: <span class="st0">'language='</span>+language+<span class="st0">'&amp;snippet='</span>+snippet,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dataType: <span class="st0">&quot;html&quot;</span>,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; success: <span class="kw2">function</span><span class="br0">&#40;</span>msg<span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>msg<span class="br0">&#41;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; msg = msg.<span class="me1">replace</span><span class="br0">&#40;</span><span class="st0">'&amp;amp;'</span>, <span class="st0">'&amp;'</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; thisItem.<span class="me1">after</span><span class="br0">&#40;</span>msg<span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; thisItem.<span class="me1">hide</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div><p><a href="javascript: void(0);" class="showpre">Display clean javascript code for copying</a></p><textarea style="display: none; width: 100%; height: 120px;">$(document).ready(function(){

	// Initialise highlighting
	if($('pre').length){
		$('pre').each(function(){
			highLight($(this));
		});
	}

});

// Highlight item
function highLight(thisItem){
	snippet  = thisItem.html();
	snippet = snippet.replace(/&amp;amp;amp;/ig, escape('&amp;'));
	snippet = snippet.replace(/&amp;lt;/ig, '&lt;');
	snippet = snippet.replace(/&amp;gt;/ig, '&gt;');
	language = thisItem.attr('class');
	$.ajax({
		type: "POST",
		url: '/scripts/highlight.php',
		data: 'language='+language+'&amp;snippet='+snippet,
		dataType: "html",
		success: function(msg){
			if (msg){
				msg = msg.replace('&amp;amp;', '&amp;');
				thisItem.after(msg);
				thisItem.hide();
			}
		}
	});
}</textarea><pre class="javascript">$(document).ready(function(){

	// Initialise highlighting
	if($('pre').length){
		$('pre').each(function(){
			highLight($(this));
		});
	}

});

// Highlight item
function highLight(thisItem){
	snippet  = thisItem.html();
	snippet = snippet.replace(/&amp;amp;amp;/ig, escape('&amp;'));
	snippet = snippet.replace(/&amp;lt;/ig, '&lt;');
	snippet = snippet.replace(/&amp;gt;/ig, '&gt;');
	language = thisItem.attr('class');
	$.ajax({
		type: "POST",
		url: '/scripts/highlight.php',
		data: 'language='+language+'&amp;snippet='+snippet,
		dataType: "html",
		success: function(msg){
			if (msg){
				msg = msg.replace('&amp;amp;', '&amp;');
				thisItem.after(msg);
				thisItem.hide();
			}
		}
	});
}</pre>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://www.macouno.com/2010/03/17/jquery-geshi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

