<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1761219579677046968</id><updated>2012-02-16T03:16:34.019-08:00</updated><title type='text'>Tofeeq ur Rehman</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tofeeqs.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tofeeqs.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tofeeq ur Rehman</name><uri>http://www.blogger.com/profile/03296500170050283843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1761219579677046968.post-2215228528123854551</id><published>2010-04-02T03:32:00.000-07:00</published><updated>2010-04-02T04:20:17.344-07:00</updated><title type='text'>Traversing XML (having nested and repeating enteries) using JQuery to create menu</title><content type='html'>XML is an essential part of the software development activity, traversing XML is much easier if it is well&lt;br /&gt;&lt;br /&gt;structured but it becomes terrible when XML is not well structured.&lt;br /&gt;I got such rough structured XML (products.xml) to create menu.&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; &amp;lt;products&amp;gt;  &lt;br /&gt;  &amp;lt;category&amp;gt;  &lt;br /&gt;   &amp;lt;categoryid&amp;gt;2&amp;lt;/categoryid&amp;gt;  &lt;br /&gt;   &amp;lt;categoryname&amp;gt;Lunch&amp;lt;/categoryname&amp;gt;  &lt;br /&gt;   &amp;lt;category&amp;gt;  &lt;br /&gt;    &amp;lt;categoryid&amp;gt;5&amp;lt;/categoryid&amp;gt;  &lt;br /&gt;    &amp;lt;categoryname&amp;gt;Snacks&amp;lt;/categoryname&amp;gt;  &lt;br /&gt;    &amp;lt;product&amp;gt;  &lt;br /&gt;     &amp;lt;productid&amp;gt;003&amp;lt;/productid&amp;gt;  &lt;br /&gt;     &amp;lt;productname&amp;gt;Hot Dog&amp;lt;/productname&amp;gt;  &lt;br /&gt;     &amp;lt;productdesc&amp;gt;Big old greasy breakfast&amp;lt;/productdesc&amp;gt;  &lt;br /&gt;     &amp;lt;productprice&amp;gt;20.00&amp;lt;/productprice&amp;gt;  &lt;br /&gt;     &amp;lt;tax-sales&amp;gt;13&amp;lt;/tax-sales&amp;gt;  &lt;br /&gt;     &amp;lt;tax-service&amp;gt;10&amp;lt;/tax-service&amp;gt;  &lt;br /&gt;    &amp;lt;/product&amp;gt;  &lt;br /&gt;   &amp;lt;/category&amp;gt;  &lt;br /&gt;   &amp;lt;category&amp;gt;  &lt;br /&gt;    &amp;lt;categoryid&amp;gt;6&amp;lt;/categoryid&amp;gt;  &lt;br /&gt;    &amp;lt;categoryname&amp;gt;Dinner&amp;lt;/categoryname&amp;gt;  &lt;br /&gt;    &amp;lt;category&amp;gt;  &lt;br /&gt;     &amp;lt;categoryid&amp;gt;7&amp;lt;/categoryid&amp;gt;  &lt;br /&gt;     &amp;lt;categoryname&amp;gt;Chinese&amp;lt;/categoryname&amp;gt;  &lt;br /&gt;     &amp;lt;category&amp;gt;  &lt;br /&gt;      &amp;lt;categoryid&amp;gt;8&amp;lt;/categoryid&amp;gt;  &lt;br /&gt;      &amp;lt;categoryname&amp;gt;Starters&amp;lt;/categoryname&amp;gt;  &lt;br /&gt;      &amp;lt;product&amp;gt;  &lt;br /&gt;       &amp;lt;productid&amp;gt;003&amp;lt;/productid&amp;gt;  &lt;br /&gt;       &amp;lt;productname&amp;gt;Dumplings&amp;lt;/productname&amp;gt;  &lt;br /&gt;       &amp;lt;productdesc&amp;gt;Big old greasy breakfast&amp;lt;/productdesc&amp;gt;  &lt;br /&gt;       &amp;lt;productprice&amp;gt;20.00&amp;lt;/productprice&amp;gt;  &lt;br /&gt;       &amp;lt;tax-sales&amp;gt;13&amp;lt;/tax-sales&amp;gt;  &lt;br /&gt;       &amp;lt;tax-service&amp;gt;10&amp;lt;/tax-service&amp;gt;  &lt;br /&gt;      &amp;lt;/product&amp;gt;  &lt;br /&gt;     &amp;lt;/category&amp;gt;  &lt;br /&gt;    &amp;lt;/category&amp;gt;  &lt;br /&gt;    &amp;lt;category&amp;gt;  &lt;br /&gt;     &amp;lt;categoryid&amp;gt;11&amp;lt;/categoryid&amp;gt;  &lt;br /&gt;     &amp;lt;categoryname&amp;gt;Mexican&amp;lt;/categoryname&amp;gt;  &lt;br /&gt;     &amp;lt;category&amp;gt;  &lt;br /&gt;      &amp;lt;categoryid&amp;gt;8&amp;lt;/categoryid&amp;gt;  &lt;br /&gt;      &amp;lt;categoryname&amp;gt;Starters&amp;lt;/categoryname&amp;gt;  &lt;br /&gt;      &amp;lt;product&amp;gt;  &lt;br /&gt;       &amp;lt;productid&amp;gt;003&amp;lt;/productid&amp;gt;  &lt;br /&gt;       &amp;lt;productname&amp;gt;Dumplings&amp;lt;/productname&amp;gt;  &lt;br /&gt;       &amp;lt;productdesc&amp;gt;Big old greasy breakfast&amp;lt;/productdesc&amp;gt;  &lt;br /&gt;       &amp;lt;productprice&amp;gt;20.00&amp;lt;/productprice&amp;gt;  &lt;br /&gt;       &amp;lt;tax-sales&amp;gt;13&amp;lt;/tax-sales&amp;gt;  &lt;br /&gt;       &amp;lt;tax-service&amp;gt;10&amp;lt;/tax-service&amp;gt;  &lt;br /&gt;      &amp;lt;/product&amp;gt;  &lt;br /&gt;     &amp;lt;/category&amp;gt;  &lt;br /&gt;     &amp;lt;product&amp;gt;  &lt;br /&gt;      &amp;lt;productid&amp;gt;001&amp;lt;/productid&amp;gt;  &lt;br /&gt;      &amp;lt;productname&amp;gt;soup&amp;lt;/productname&amp;gt;  &lt;br /&gt;      &amp;lt;productdesc&amp;gt;2 pieces of toast with butter and jam&amp;lt;/productdesc&amp;gt;  &lt;br /&gt;      &amp;lt;productprice&amp;gt;12.00&amp;lt;/productprice&amp;gt;  &lt;br /&gt;      &amp;lt;tax-sales&amp;gt;13&amp;lt;/tax-sales&amp;gt;  &lt;br /&gt;      &amp;lt;tax-service&amp;gt;10&amp;lt;/tax-service&amp;gt;  &lt;br /&gt;     &amp;lt;/product&amp;gt;  &lt;br /&gt;    &amp;lt;/category&amp;gt;  &lt;br /&gt;    &amp;lt;product&amp;gt;  &lt;br /&gt;     &amp;lt;productid&amp;gt;001&amp;lt;/productid&amp;gt;  &lt;br /&gt;     &amp;lt;productname&amp;gt;soup&amp;lt;/productname&amp;gt;  &lt;br /&gt;     &amp;lt;productdesc&amp;gt;2 pieces of toast with butter and jam&amp;lt;/productdesc&amp;gt;  &lt;br /&gt;     &amp;lt;productprice&amp;gt;12.00&amp;lt;/productprice&amp;gt;  &lt;br /&gt;     &amp;lt;tax-sales&amp;gt;13&amp;lt;/tax-sales&amp;gt;  &lt;br /&gt;     &amp;lt;tax-service&amp;gt;10&amp;lt;/tax-service&amp;gt;  &lt;br /&gt;    &amp;lt;/product&amp;gt;  &lt;br /&gt;   &amp;lt;/category&amp;gt;  &lt;br /&gt;  &amp;lt;/category&amp;gt;  &lt;br /&gt; &amp;lt;/products&amp;gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You could see that nodes are nested and repeating within other nodes for example&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; &amp;lt;category&amp;gt;  &lt;br /&gt;    &amp;lt;categoryid&amp;gt;6&amp;lt;/categoryid&amp;gt;  &lt;br /&gt;    &amp;lt;categoryname&amp;gt;Dinner&amp;lt;/categoryname&amp;gt;  &lt;br /&gt;    &amp;lt;category&amp;gt;  &lt;br /&gt;     &amp;lt;categoryid&amp;gt;7&amp;lt;/categoryid&amp;gt;  &lt;br /&gt;     &amp;lt;categoryname&amp;gt;Chinese&amp;lt;/categoryname&amp;gt;  &lt;br /&gt;     &amp;lt;category&amp;gt;  &lt;br /&gt;      &amp;lt;categoryid&amp;gt;8&amp;lt;/categoryid&amp;gt;  &lt;br /&gt;      &amp;lt;categoryname&amp;gt;Starters&amp;lt;/categoryname&amp;gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Hence with JQuery, XML traversing is very easy but with such situation it wasn't so easy to traverse.&lt;br /&gt;There was an other problem in XML also that the category depth was dynamic, it could be to nth level.&lt;br /&gt;The only solution I thought is the using recursion.&lt;br /&gt;So, here we go.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have used JQuery 1.4.2, you could download from &lt;a href="http://jquery.com/"&gt;JQuery&lt;/a&gt;&lt;br /&gt;first of all add jquery source in your header like&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; &amp;lt;script language="javascript" type="text/javascript" src="js/jquery/1.4.2/jquery.min.js"&amp;gt;&amp;lt;/script&amp;gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;rest javascript code is as below&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; &amp;lt;script language="javascript" type="text/javascript" &amp;gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; // XML directory where xml files are saved  &lt;br /&gt; var XML_DIR = './xml/';  &lt;br /&gt; //CSS classes for category and products  &lt;br /&gt; var CATEGORY_CLASS_NAME = "button_products_category";  &lt;br /&gt; var PRODUCT_CLASS_NAME = "button_products_product";  &lt;br /&gt; $(document).ready(function()  &lt;br /&gt; {  &lt;br /&gt;       $.ajax({  &lt;br /&gt;           type: "GET",  &lt;br /&gt;           url: XML_DIR + "products.xml",  &lt;br /&gt;           dataType: "xml",  &lt;br /&gt;           success: traverse  &lt;br /&gt;       });  &lt;br /&gt; });  &lt;br /&gt; function traverse(xml) {  &lt;br /&gt;      var ul = document.createElement('ul');  &lt;br /&gt;      ul.setAttribute('id', 'category');  &lt;br /&gt;      $(xml).find('products').children().each(function() {  &lt;br /&gt;           var categoryName = $(this).find('categoryname:first').text();  &lt;br /&gt;           var categoryId = $(this).find('categoryid:first').text();  &lt;br /&gt;           var li = createLi(categoryName, categoryId, CATEGORY_CLASS_NAME);  &lt;br /&gt;           getProducts($(this), li);  &lt;br /&gt;           //Getting inner categories if exist  &lt;br /&gt;           getNestedCategories($(this), li);  &lt;br /&gt;           ul.appendChild(li);  &lt;br /&gt;      });  &lt;br /&gt;      // setting empty the category list  &lt;br /&gt;      $('div#category').empty()  &lt;br /&gt;      .append(ul);  &lt;br /&gt; }  &lt;br /&gt; function getNestedCategories(node, li) {  &lt;br /&gt;      var ul = document.createElement('ul');  &lt;br /&gt;       node.children().each(function() {  &lt;br /&gt;           if ($(this)[0].tagName == 'category') {  &lt;br /&gt;                var categoryName = $(this).find('categoryname:first').text();  &lt;br /&gt;                var categoryId = $(this).find('categoryid:first').text();  &lt;br /&gt;                var ili = createLi(categoryName, categoryId, CATEGORY_CLASS_NAME);  &lt;br /&gt;                //Using recursion to getting nested categories  &lt;br /&gt;                if ($(this).find('category').children().length &amp;gt; 0 ) {  &lt;br /&gt;                     getNestedCategories($(this), ili);  &lt;br /&gt;                }  &lt;br /&gt;                //Getting products for each category  &lt;br /&gt;                getProducts($(this), ili);  &lt;br /&gt;                ul.appendChild(ili);  &lt;br /&gt;                li.appendChild(ul);  &lt;br /&gt;           }  &lt;br /&gt;      });  &lt;br /&gt;      li.appendChild(ul);  &lt;br /&gt; }  &lt;br /&gt; function getProducts(node, mli) {  &lt;br /&gt;      var ul = document.createElement('ul');  &lt;br /&gt;      node.children().each(function(){  &lt;br /&gt;           if ($(this)[0].tagName == 'product') {  &lt;br /&gt;                ul.appendChild(createLi($(this).find('productname').text(), $(this).find('productid').text(), PRODUCT_CLASS_NAME));  &lt;br /&gt;           }  &lt;br /&gt;      });  &lt;br /&gt;      mli.appendChild(ul);  &lt;br /&gt; }  &lt;br /&gt; function createLi(nodeName, nodeId, class) {  &lt;br /&gt;      var li = document.createElement('li');  &lt;br /&gt;      var button = document.createElement('input');  &lt;br /&gt;      button.setAttribute('type', 'button');  &lt;br /&gt;      button.setAttribute('value', nodeName);  &lt;br /&gt;      button.setAttribute('id', nodeId);  &lt;br /&gt;      button.className = class;  &lt;br /&gt;      li.appendChild(button);  &lt;br /&gt;      return li;  &lt;br /&gt; }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; &amp;lt;/script&amp;gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1761219579677046968-2215228528123854551?l=tofeeqs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tofeeqs.blogspot.com/feeds/2215228528123854551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1761219579677046968&amp;postID=2215228528123854551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/2215228528123854551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/2215228528123854551'/><link rel='alternate' type='text/html' href='http://tofeeqs.blogspot.com/2010/04/traversing-nested-and-repeating-xml.html' title='Traversing XML (having nested and repeating enteries) using JQuery to create menu'/><author><name>Tofeeq ur Rehman</name><uri>http://www.blogger.com/profile/03296500170050283843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1761219579677046968.post-3102820220210854499</id><published>2009-04-20T00:04:00.000-07:00</published><updated>2009-04-20T00:09:10.033-07:00</updated><title type='text'>Remove new line CRLF (\r\n) or line break</title><content type='html'>Removing the new line tags (CRLF) from a string&lt;br /&gt;&lt;br /&gt;$string = "some thing new &lt;br /&gt;line one&lt;br /&gt;line two";&lt;br /&gt;&lt;br /&gt;$new_string = preg_replace("/\r\n/", " ", $string);&lt;br /&gt;&lt;br /&gt;you may also replace the line break with &lt;br /&gt; tag as following&lt;br /&gt;&lt;br /&gt;$new_string = preg_replace("/\r\n/", "&lt;br /&gt;", $string);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1761219579677046968-3102820220210854499?l=tofeeqs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tofeeqs.blogspot.com/feeds/3102820220210854499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1761219579677046968&amp;postID=3102820220210854499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/3102820220210854499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/3102820220210854499'/><link rel='alternate' type='text/html' href='http://tofeeqs.blogspot.com/2009/04/remove-new-line-crlf-rn-or-line-break.html' title='Remove new line CRLF (\r\n) or line break'/><author><name>Tofeeq ur Rehman</name><uri>http://www.blogger.com/profile/03296500170050283843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1761219579677046968.post-3686209076602371593</id><published>2009-02-25T00:26:00.001-08:00</published><updated>2009-02-25T00:26:41.836-08:00</updated><title type='text'>Sorting an array by key on day, month, year or time</title><content type='html'>&lt;code&gt;&lt;br /&gt;function date_compare($x, $y){&lt;br /&gt;&amp;nbsp;&amp;nbsp;$x = strtotime($x);&lt;br /&gt;&amp;nbsp;&amp;nbsp;$y = strtotime($y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ($x == $y) return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return (($x &gt; $y)?1:-1);&lt;br /&gt;}&lt;br /&gt;$array = array (&lt;br /&gt;&amp;nbsp;&amp;nbsp;'Jan 01, 2008' =&gt; 1,&lt;br /&gt;&amp;nbsp;&amp;nbsp;'Oct 31, 2008' =&gt; 10,&lt;br /&gt;&amp;nbsp;&amp;nbsp;'Nov 01, 2008' =&gt; 11,&lt;br /&gt;&amp;nbsp;&amp;nbsp;'Dec 01, 2008' =&gt; 12,&lt;br /&gt;&amp;nbsp;&amp;nbsp;'Jul 01, 2008' =&gt; 7,&lt;br /&gt;&amp;nbsp;&amp;nbsp;'Aug 01, 2008' =&gt; 8,&lt;br /&gt;&amp;nbsp;&amp;nbsp;'Sep 01, 2008' =&gt; 9,&lt;br /&gt;);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Before sorting print the array&lt;br /&gt;&lt;code&gt;&lt;br /&gt;print_r($array);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Now Sort the array&lt;br /&gt;&lt;code&gt;&lt;br /&gt;uksort($array, 'date_compare');&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;After sorting print the array&lt;br /&gt;&lt;code&gt;&lt;br /&gt;print_r($array);&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1761219579677046968-3686209076602371593?l=tofeeqs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tofeeqs.blogspot.com/feeds/3686209076602371593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1761219579677046968&amp;postID=3686209076602371593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/3686209076602371593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/3686209076602371593'/><link rel='alternate' type='text/html' href='http://tofeeqs.blogspot.com/2009/02/sorting-array-by-key-on-day-month-year.html' title='Sorting an array by key on day, month, year or time'/><author><name>Tofeeq ur Rehman</name><uri>http://www.blogger.com/profile/03296500170050283843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1761219579677046968.post-7936420491133691705</id><published>2009-02-25T00:25:00.001-08:00</published><updated>2009-02-25T00:25:33.813-08:00</updated><title type='text'>Sorting an array by time, date, month or year</title><content type='html'>&lt;code&gt;&lt;br /&gt;function date_compare($x, $y){&lt;br /&gt;&amp;nbsp;&amp;nbsp;$x = strtotime($x);&lt;br /&gt;&amp;nbsp;&amp;nbsp;$y = strtotime($y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ($x == $y) return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return (($x &gt; $y)?1:-1);&lt;br /&gt;}&lt;br /&gt;$array = array (&lt;br /&gt;&amp;nbsp;'Jan 01, 2008',&lt;br /&gt;&amp;nbsp;'Oct 31, 2008',&lt;br /&gt;&amp;nbsp;'Nov 01, 2008',&lt;br /&gt;&amp;nbsp;'Dec 01, 2008',&lt;br /&gt;&amp;nbsp;'Jul 01, 2008',&lt;br /&gt;&amp;nbsp;'Aug 01, 2008',&lt;br /&gt;&amp;nbsp;'Sep 01, 2008'&lt;br /&gt;);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Before sorting print the array&lt;br /&gt;&lt;code&gt;&lt;br /&gt;print_r($array);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Now Sort the array&lt;br /&gt;&lt;code&gt;&lt;br /&gt;usort($array, 'date_compare');&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;After sorting print the array&lt;br /&gt;&lt;code&gt;&lt;br /&gt;print_r($array);&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1761219579677046968-7936420491133691705?l=tofeeqs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tofeeqs.blogspot.com/feeds/7936420491133691705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1761219579677046968&amp;postID=7936420491133691705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/7936420491133691705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/7936420491133691705'/><link rel='alternate' type='text/html' href='http://tofeeqs.blogspot.com/2009/02/sorting-array-by-time-date-month-or.html' title='Sorting an array by time, date, month or year'/><author><name>Tofeeq ur Rehman</name><uri>http://www.blogger.com/profile/03296500170050283843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1761219579677046968.post-4136699419132702649</id><published>2008-11-13T04:08:00.001-08:00</published><updated>2008-11-13T04:09:25.614-08:00</updated><title type='text'>Calculating difference between two dates in days in PHP</title><content type='html'>Calculating the days between two dates is so easy in php, you can even calculate the hours, minutes and seconds between two dates&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$date1 = "2008-06-11";&lt;br /&gt;$date2 = "2009-05-09";&lt;br /&gt;&lt;br /&gt;$diff = strtotime($date2) - strtotime($date1);&lt;br /&gt;$days = $diff/(60*60*24);&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1761219579677046968-4136699419132702649?l=tofeeqs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tofeeqs.blogspot.com/feeds/4136699419132702649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1761219579677046968&amp;postID=4136699419132702649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/4136699419132702649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/4136699419132702649'/><link rel='alternate' type='text/html' href='http://tofeeqs.blogspot.com/2008/11/calculating-difference-between-two.html' title='Calculating difference between two dates in days in PHP'/><author><name>Tofeeq ur Rehman</name><uri>http://www.blogger.com/profile/03296500170050283843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1761219579677046968.post-7095546998175581994</id><published>2008-11-04T02:01:00.000-08:00</published><updated>2008-11-05T05:27:24.847-08:00</updated><title type='text'>PHP: post variables without using form</title><content type='html'>There are several ways for posting variables without using forms in PHP i.e CURL, SOAP library or sockets&lt;br /&gt;Well, I'll use socket to post variables to a URL, URL may be a script file such as example.php&lt;br /&gt;As the variables are posted using socket the URL may return some response, we can get that response back from that socket&lt;br /&gt;&lt;br /&gt;First step is to make a request packet which will post variables to that URL, to construct a packet we should know the following&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;method (you may use get or post) and http or https (for secure URLs you should use https)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;host name (where the URL is hosted, i.e www.example.com)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Content type (i.e form)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Content length&lt;/li&gt;&lt;/ul&gt;I am now going to write a simple packet which will send variable1 and variable2 to the example.php&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$packet = "POST example.php HTTP/1.0\r\n";&lt;br /&gt;$packet .= "Host: www.example.com\r\n";&lt;br /&gt;$packet .= "Content-Type: application/x-www-form-urlencoded\r\n";&lt;br /&gt;$packet .= "Content-Length: 265\r\n";&lt;br /&gt;$packet .= "Connection: close\r\n\r\n";&lt;br /&gt;$packet .= "variable1=value1&amp;amp;variable2=value2\r\n";&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Second step is to send this packet over the socket, for this purpose I will use sendPacket function which I have written below&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$response = sendPacket($packet, 'secure.hostelworld.com');&lt;br /&gt;echo $response;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Just include the following function in your script and enjoy&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function sendPacket(&amp;amp;$packet, $host, $port=80, $error_no=null, $error_string=null, $request_timeout=30, $proxy=null, $proxy_regexp=null) {&lt;br /&gt;&lt;br /&gt;    $response = null;&lt;br /&gt;    //opening connection&lt;br /&gt;    if ($proxy) {&lt;br /&gt;     if (!preg_match($proxy_regexp, $proxy)) die("invalid proxy");&lt;br /&gt;         $proxy = explode(":", $proxy);&lt;br /&gt;     if (!($ack = fsockopen($proxy[0], $proxy[1], $error_no, $error_string, $request_timeout))) {&lt;br /&gt;          die("No response from proxy");&lt;br /&gt;     }&lt;br /&gt;     //sending packet&lt;br /&gt;     fputs($ack, $packet);&lt;br /&gt; &lt;br /&gt;     while (!feof($ack) or !eregi((chr(0x0d) . chr(0x0a) . chr(0x0d) . chr(0x0a)), $response)) {&lt;br /&gt;&lt;br /&gt;      $response .= fread($ack, 1);&lt;br /&gt;     }&lt;br /&gt; &lt;br /&gt;  } else {&lt;br /&gt;&lt;br /&gt; if (!($ack = fsockopen(gethostbyname($host), $port, $error_no, $error_string, $request_timeout))) {&lt;br /&gt;&lt;br /&gt;   die("$host:$port not responding");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; //sending packet&lt;br /&gt; fputs($ack, $packet);&lt;br /&gt; while (!feof($ack)) {&lt;br /&gt;  $response .= fgets($ack);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;fclose($ack);&lt;br /&gt;return $response;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1761219579677046968-7095546998175581994?l=tofeeqs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tofeeqs.blogspot.com/feeds/7095546998175581994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1761219579677046968&amp;postID=7095546998175581994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/7095546998175581994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/7095546998175581994'/><link rel='alternate' type='text/html' href='http://tofeeqs.blogspot.com/2008/11/php-posting-variables-without-using.html' title='PHP: post variables without using form'/><author><name>Tofeeq ur Rehman</name><uri>http://www.blogger.com/profile/03296500170050283843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1761219579677046968.post-6571448052661735915</id><published>2008-10-15T22:49:00.000-07:00</published><updated>2008-10-15T22:50:50.785-07:00</updated><title type='text'>How to get rid of write protected alert for flash drives</title><content type='html'>It is very simple for XP users&lt;br /&gt;go to start menu click on run&lt;br /&gt;type "regedit" in your run command and press enter&lt;br /&gt;it will show registery editor&lt;br /&gt;browse through following path&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies&lt;br /&gt;you will get key "WriteProtect" with value "1" just change this value to "0" and exit registery editor&lt;br /&gt;&lt;br /&gt;you have done it&lt;br /&gt;you may need to restart your windows&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1761219579677046968-6571448052661735915?l=tofeeqs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tofeeqs.blogspot.com/feeds/6571448052661735915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1761219579677046968&amp;postID=6571448052661735915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/6571448052661735915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1761219579677046968/posts/default/6571448052661735915'/><link rel='alternate' type='text/html' href='http://tofeeqs.blogspot.com/2008/10/how-to-get-rid-of-write-protected-alert.html' title='How to get rid of write protected alert for flash drives'/><author><name>Tofeeq ur Rehman</name><uri>http://www.blogger.com/profile/03296500170050283843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
