<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: jsfromhell code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sat, 17 May 2008 04:40:52 GMT</pubDate>
    <description>DZone Snippets: jsfromhell code</description>
    <item>
      <title>Replace working as PHP str_replace //JavaScript Function</title>
      <link>http://snippets.dzone.com/posts/show/5369</link>
      <description>&lt;a href="http://jsfromhell.com"&gt;Useless JavaScript implementation of the php function str_replace.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com&lt;br /&gt;&lt;br /&gt;function replace(f, r, s){&lt;br /&gt;	var ra = r instanceof Array, sa = s instanceof Array, l = (f = [].concat(f)).length, r = [].concat(r), i = (s = [].concat(s)).length;&lt;br /&gt;	while(j = 0, i--)&lt;br /&gt;		while(s[i] = s[i].split(f[j]).join(ra ? r[j] || "" : r[0]), ++j &lt; l);&lt;br /&gt;	return sa ? s : s[0];&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 17 Apr 2008 05:10:07 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5369</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>Output JavaScript variables from PHP</title>
      <link>http://snippets.dzone.com/posts/show/5342</link>
      <description>Class with useful static methods for outputting PHP values into JavaScript format.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com&lt;br /&gt;&lt;br /&gt;class JS{&lt;br /&gt;	//generic and maybe not the desired results xD&lt;br /&gt;	function value($o){&lt;br /&gt;		if($o === null)&lt;br /&gt;			return 'null';&lt;br /&gt;		$t = strtolower(gettype($o));&lt;br /&gt;		if($t == 'string' &amp;&amp; is_numeric($o) &amp;&amp; ($o[0] || strlen($o) == 1) || in_array($t, array('double', 'integer')))&lt;br /&gt;			$t = 'number';&lt;br /&gt;		elseif($t == 'string' &amp;&amp; preg_match('@^\d{4}(?:-\d{1,2}){1,2}(?: (?:\d{1,2}:){2}\d{1,2})?$@', $o)) //strtotime works also with "strange" values strtotime('x')&lt;br /&gt;			$t = 'date';&lt;br /&gt;		elseif($t == 'array' &amp;&amp; ($c = count($k = array_keys($o))) &amp;&amp; $k !== range(0, $c - 1))&lt;br /&gt;			$t = 'object';&lt;br /&gt;		elseif(!in_array($t, array('boolean', 'string', 'array', 'object')))&lt;br /&gt;			$t = 'string';&lt;br /&gt;		$t = 'from' . $t;&lt;br /&gt;		return self::$t($o);&lt;br /&gt;	}&lt;br /&gt;	function fromNumber($o){&lt;br /&gt;		return +$o . '';&lt;br /&gt;	}&lt;br /&gt;	function fromObject($o){&lt;br /&gt;		$r = array();&lt;br /&gt;		foreach($o as $n =&gt; $v)&lt;br /&gt;			$r[] = self::fromString($n) . ':' . self::value($v);&lt;br /&gt;		return '{' . implode(',', $r) . '}';&lt;br /&gt;	}&lt;br /&gt;	function fromBoolean($o){&lt;br /&gt;		return $o ? 'true' : 'false';&lt;br /&gt;	}&lt;br /&gt;	//$q = should quote? &lt;br /&gt;	//$c = char that will be used to quote&lt;br /&gt;	function fromString($o, $q = true, $c = '"'){&lt;br /&gt;		return ($p = $q ? $c : '') . preg_replace('/\r\n|\n\r|\r/', '\n', str_replace($c, '\\' . $c, str_replace('\\', '\\\\', $o))) . $p;&lt;br /&gt;	}&lt;br /&gt;	function fromArray($o){&lt;br /&gt;		$s = '';&lt;br /&gt;		foreach($o as $v)&lt;br /&gt;			$s .= ($s ? ',' : '') . self::value($v);&lt;br /&gt;		return '[' . $s . ']';&lt;br /&gt;	}&lt;br /&gt;	function fromDate($o){&lt;br /&gt;		(is_numeric($o) &amp;&amp; $o = +$o) || ($o = strtotime($o)) &gt; 0 || ($o = mktime());&lt;br /&gt;		$o = explode(',', date('Y,n,j,G,i,s', $o));&lt;br /&gt;		foreach($o as $i =&gt; $v)&lt;br /&gt;			$o[$i] = +$v;&lt;br /&gt;		return 'new Date(' . implode(',', $o)  . ')';&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$o = new stdClass;&lt;br /&gt;$o-&gt;abc = 123;&lt;br /&gt;echo implode("\n&lt;br /&gt;", array(&lt;br /&gt;	JS::value('1984-07-22 11:30:12'),&lt;br /&gt;	JS::value('Test'),&lt;br /&gt;	JS::value(1234),&lt;br /&gt;	JS::value(true),&lt;br /&gt;	JS::value(array(1,2,3)),&lt;br /&gt;	JS::value(array('lala' =&gt; 'x')),&lt;br /&gt;	JS::value($o)&lt;br /&gt;));&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Wed, 09 Apr 2008 23:57:18 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5342</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>Point Inside a Polygon //JavaScript Function</title>
      <link>http://snippets.dzone.com/posts/show/5295</link>
      <description>&lt;a href="http://jsfromhell.com/math/is-point-in-poly"&gt;&lt;br /&gt;Checks whether a point is inside a polygon.&lt;br /&gt;Adapted from: [http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html]&lt;br /&gt;&lt;br /&gt;[UPDATED CODE AND HELP CAN BE FOUND HERE: Point Inside a Polygon]&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com/classes/is-point-in-poly [v1.0]&lt;br /&gt;&lt;br /&gt;function isPointInPoly(poly, pt){&lt;br /&gt;	for(var c = false, i = -1, l = poly.length, j = l - 1; ++i &lt; l; j = i)&lt;br /&gt;		((poly[i].y &lt;= pt.y &amp;&amp; pt.y &lt; poly[j].y) || (poly[j].y &lt;= pt.y &amp;&amp; pt.y &lt; poly[i].y))&lt;br /&gt;		&amp;&amp; (pt.x &lt; (poly[j].x - poly[i].x) * (pt.y - poly[i].y) / (poly[j].y - poly[i].y) + poly[i].x)&lt;br /&gt;		&amp;&amp; (c = !c);&lt;br /&gt;	return c;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;//&lt;![CDATA[&lt;br /&gt;&lt;br /&gt;points = [&lt;br /&gt;	{x: 0, y: 0},&lt;br /&gt;	{x: 0, y: 50},&lt;br /&gt;	{x: 50, y: 10},&lt;br /&gt;	{x: -50, y: -10},&lt;br /&gt;	{x: 0, y: -50},&lt;br /&gt;	{x: 0, y: 0}&lt;br /&gt;];&lt;br /&gt;&lt;br /&gt;alert(isPointInPoly(points, {x: 10, y: 10}) ? "In" : "Out");&lt;br /&gt;&lt;br /&gt;//]]&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Sun, 30 Mar 2008 16:57:56 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5295</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>UTF-8 Converter //JavaScript Object</title>
      <link>http://snippets.dzone.com/posts/show/5294</link>
      <description>&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jsfromhell.com/geral/utf-8"&gt;&lt;br /&gt;Converts a sequence of ANSI characters to UTF-8 and vice-versa.&lt;br /&gt;&lt;br /&gt;[UPDATED CODE AND HELP CAN BE FOUND HERE]&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com/geral/utf-8 [v1.0]&lt;br /&gt;&lt;br /&gt;UTF8 = {&lt;br /&gt;	encode: function(s){&lt;br /&gt;		for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i &lt; l;&lt;br /&gt;			s[i] = (c = s[i].charCodeAt(0)) &gt;= 127 ? o(0xc0 | (c &gt;&gt;&gt; 6)) + o(0x80 | (c &amp; 0x3f)) : s[i]&lt;br /&gt;		);&lt;br /&gt;		return s.join("");&lt;br /&gt;	},&lt;br /&gt;	decode: function(s){&lt;br /&gt;		for(var a, b, i = -1, l = (s = s.split("")).length, o = String.fromCharCode, c = "charCodeAt"; ++i &lt; l;&lt;br /&gt;			((a = s[i][c](0)) &amp; 0x80) &amp;&amp;&lt;br /&gt;			(s[i] = (a &amp; 0xfc) == 0xc0 &amp;&amp; ((b = s[i + 1][c](0)) &amp; 0xc0) == 0x80 ?&lt;br /&gt;			o(((a &amp; 0x03) &lt;&lt; 6) + (b &amp; 0x3f)) : o(128), s[++i] = "")&lt;br /&gt;		);&lt;br /&gt;		return s.join("");&lt;br /&gt;	}&lt;br /&gt;};&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var s = "a&#225;&#233;&#237;&#243;&#250;e";&lt;br /&gt;document.write(&lt;br /&gt;	('UTF8.encode("' + s + '") = ').bold(), UTF8.encode(s), "&lt;br /&gt;",&lt;br /&gt;	('UTF8.decode(UTF8.encode("' + s + '"))) = ').bold(), UTF8.decode(UTF8.encode(s))&lt;br /&gt;);&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 30 Mar 2008 16:52:18 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5294</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>TimeLine //JavaScript Class</title>
      <link>http://snippets.dzone.com/posts/show/5293</link>
      <description>&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jsfromhell.com/classes/timeline"&gt;&lt;br /&gt;Simulates the Adobe Flash timeline. You define the amount of frames, the speed in fps (frames per second) and, at each frame passage an event is called, useful for animations.&lt;br /&gt;&lt;br /&gt;[UPDATED CODE AND HELP CAN BE FOUND HERE]&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com/classes/timeline [v1.0]&lt;br /&gt;&lt;br /&gt;TimeLine = function(fps, f){&lt;br /&gt;	this.fps = fps, this.frames = f;&lt;br /&gt;};&lt;br /&gt;with({o: TimeLine, $: TimeLine.prototype}){&lt;br /&gt;	o.timers = [];&lt;br /&gt;	$.running = !!($.current = +(o.timer = $.time = null));&lt;br /&gt;	o.run = function(){&lt;br /&gt;		var o = this;&lt;br /&gt;		o.timer || (o.timer = setInterval(function(){&lt;br /&gt;			for(var h, d = +(new Date), t = o.timers, i = t.length; i--;){&lt;br /&gt;				(!t[i].running || ((d - t[i].time) / (1e3 / t[i].fps) &gt; t[i].current + 1 &amp;&amp;&lt;br /&gt;				t[i].onframe(++t[i].current), t[i].current &gt;= t[i].frames)) &amp;&amp;&lt;br /&gt;				(h = t.splice(i, 1)[0], h.stop(1));&lt;br /&gt;			}&lt;br /&gt;		}, 1));&lt;br /&gt;	};&lt;br /&gt;	$.start = function(c){&lt;br /&gt;		var o = this, t = TimeLine;&lt;br /&gt;		if(o.running) return;&lt;br /&gt;		o.running = true, o.current = c || 0;&lt;br /&gt;		o.time = new Date, o.onstart &amp;&amp; o.onstart();&lt;br /&gt;		if(!o.onframe || o.frames &lt;= 0 || o.fps &lt;= 0)&lt;br /&gt;			return o.stop(1);&lt;br /&gt;		t.timers.push(this), t.run();&lt;br /&gt;	};&lt;br /&gt;	$.stop = function(){&lt;br /&gt;		var o = this;&lt;br /&gt;		o.running = false;&lt;br /&gt;		if(!TimeLine.timers.length)&lt;br /&gt;			TimeLine.timer = clearInterval(TimeLine.timer), null;&lt;br /&gt;		arguments.length &amp;&amp; o.onstop &amp;&amp; o.onstop();&lt;br /&gt;	};&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;&lt;div id="box" style="position: absolute; top: 100px; background: #efe; width: 100px; height: 100px"&gt;25 fps&lt;/div&gt;&lt;br /&gt;&lt;div id="box2" style="position: absolute; top: 300px; background: #ff9; width: 100px; height: 100px"&gt;12 fps&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;TimeLine working together with the ease in quad function.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;Math.ease = function (t, b, c, d) {&lt;br /&gt;	if ((t /= d / 2) &lt; 1)&lt;br /&gt;		return c / 2 * t * t + b;&lt;br /&gt;	return -c / 2 * (--t * (t - 2) - 1) + b;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;var o = new TimeLine(25, 50), d = document, b = d.getElementById("box");&lt;br /&gt;o.onframe = function(){&lt;br /&gt;	b.style.left = Math.ease(this.current, 0, 400, 30) + "px";&lt;br /&gt;};&lt;br /&gt;o.onstart = function(){&lt;br /&gt;	d.body.appendChild(d.createTextNode("Started"));&lt;br /&gt;};&lt;br /&gt;o.onstop = function(){&lt;br /&gt;	d.body.appendChild(d.createTextNode(" - Finished (" + (((new Date) - this.time)) + " msec)"))&lt;br /&gt;	d.body.appendChild(d.createElement("br"));&lt;br /&gt;	this.start();&lt;br /&gt;};&lt;br /&gt;o.start();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;var o2 = new TimeLine(12, 50), b2 = d.getElementById("box2");&lt;br /&gt;o2.onframe = function(){&lt;br /&gt;	b2.style.left = Math.ease(this.current, 0, 400, 30) + "px";&lt;br /&gt;};&lt;br /&gt;o2.onstop = function(){&lt;br /&gt;	this.start();&lt;br /&gt;};&lt;br /&gt;o2.start();&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 30 Mar 2008 16:49:21 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5293</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>Selection //JavaScript Class</title>
      <link>http://snippets.dzone.com/posts/show/4620</link>
      <description>&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jsfromhell.com/forms/selection"&gt;&lt;br /&gt;Retrieves and sets the cursor position, as well the selected text of inputs and textareas. After searching, I saw it's the only code which retrieves right information in textareas under Internet Explorer without damaging the "Ctrl+Z"&lt;br /&gt;&lt;br /&gt;[UPDATED CODE AND HELP CAN BE FOUND HERE]&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com/forms/selection [v1.0]&lt;br /&gt;&lt;br /&gt;Selection = function(input){&lt;br /&gt;	this.isTA = (this.input = input).nodeName.toLowerCase() == "textarea";&lt;br /&gt;};&lt;br /&gt;with({o: Selection.prototype}){&lt;br /&gt;	o.setCaret = function(start, end){&lt;br /&gt;		var o = this.input;&lt;br /&gt;		if(Selection.isStandard)&lt;br /&gt;			o.setSelectionRange(start, end);&lt;br /&gt;		else if(Selection.isSupported){&lt;br /&gt;			var t = this.input.createTextRange();&lt;br /&gt;			end -= start + o.value.slice(start + 1, end).split("\n").length - 1;&lt;br /&gt;			start -= o.value.slice(0, start).split("\n").length - 1;&lt;br /&gt;			t.move("character", start), t.moveEnd("character", end), t.select();&lt;br /&gt;		}&lt;br /&gt;	};&lt;br /&gt;	o.getCaret = function(){&lt;br /&gt;		var o = this.input, d = document;&lt;br /&gt;		if(Selection.isStandard)&lt;br /&gt;			return {start: o.selectionStart, end: o.selectionEnd};&lt;br /&gt;		else if(Selection.isSupported){&lt;br /&gt;			var s = (this.input.focus(), d.selection.createRange()), r, start, end, value;&lt;br /&gt;			if(s.parentElement() != o)&lt;br /&gt;				return {start: 0, end: 0};&lt;br /&gt;			if(this.isTA ? (r = s.duplicate()).moveToElementText(o) : r = o.createTextRange(), !this.isTA)&lt;br /&gt;				return r.setEndPoint("EndToStart", s), {start: r.text.length, end: r.text.length + s.text.length};&lt;br /&gt;			for(var $ = "[###]"; (value = o.value).indexOf($) + 1; $ += $);&lt;br /&gt;			r.setEndPoint("StartToEnd", s), r.text = $ + r.text, end = o.value.indexOf($);&lt;br /&gt;			s.text = $, start = o.value.indexOf($);&lt;br /&gt;			if(d.execCommand &amp;&amp; d.queryCommandSupported("Undo"))&lt;br /&gt;				for(r = 3; --r; d.execCommand("Undo"));&lt;br /&gt;			return o.value = value, this.setCaret(start, end), {start: start, end: end};&lt;br /&gt;		}&lt;br /&gt;		return {start: 0, end: 0};&lt;br /&gt;	};&lt;br /&gt;	o.getText = function(){&lt;br /&gt;		var o = this.getCaret();&lt;br /&gt;		return this.input.value.slice(o.start, o.end);&lt;br /&gt;	};&lt;br /&gt;	o.setText = function(text){&lt;br /&gt;		var o = this.getCaret(), i = this.input, s = i.value;&lt;br /&gt;		i.value = s.slice(0, o.start) + text + s.slice(o.end);&lt;br /&gt;		this.setCaret(o.start += text.length, o.start);&lt;br /&gt;	};&lt;br /&gt;	new function(){&lt;br /&gt;		var d = document, o = d.createElement("input"), s = Selection;&lt;br /&gt;		s.isStandard = "selectionStart" in o;&lt;br /&gt;		s.isSupported = s.isStandard || (o = d.selection) &amp;&amp; !!o.createRange();&lt;br /&gt;	};&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;form id="form"&gt;&lt;br /&gt;	&lt;fieldset&gt;&lt;br /&gt;		&lt;legend&gt;Selection Test&lt;/legend&gt;&lt;br /&gt;		&lt;textarea name="text" rows="10" cols="30"&gt;&lt;br /&gt;www.jsfromhell.com&lt;br /&gt;Jonas Carlos Lalala&lt;br /&gt;Bin Laden x Bush&lt;br /&gt;		&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;		&lt;input name="getText" type="button" value="[Get selected text]" /&gt;&lt;br /&gt;		&lt;input name="getSel" type="button" value="[Get cursor]" /&gt;&lt;br /&gt;		&lt;br /&gt;&lt;input name="setText" type="button" value="[Set selected text]" /&gt;&lt;br /&gt;		&lt;input name="setSel" type="button" value="[Set cursor]" /&gt;&lt;br /&gt;	&lt;/fieldset&gt;&lt;br /&gt;&lt;/form&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;var f = document.forms.form;&lt;br /&gt;var selection = new Selection(f.text);&lt;br /&gt;&lt;br /&gt;f.getText.onclick = function(){&lt;br /&gt;	alert(selection.getText());&lt;br /&gt;	f.text.focus();&lt;br /&gt;};&lt;br /&gt;f.setText.onclick = function(){&lt;br /&gt;	var s = prompt("New text:", selection.getText());&lt;br /&gt;	s !== null &amp;&amp; selection.setText(s);&lt;br /&gt;	f.text.focus();&lt;br /&gt;};&lt;br /&gt;f.getSel.onclick = function(){&lt;br /&gt;	var s = selection.getCaret();&lt;br /&gt;	alert("Start: " + s.start + "\nEnd: " + s.end);&lt;br /&gt;	f.text.focus();&lt;br /&gt;};&lt;br /&gt;f.setSel.onclick = function(){&lt;br /&gt;	var s = selection.getCaret();&lt;br /&gt;	selection.setCaret(+prompt("Start:", s.start) || 0, +prompt("End:", s.end) || 0);&lt;br /&gt;	f.text.focus();&lt;br /&gt;};&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sat, 06 Oct 2007 15:02:21 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4620</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>CSV Parser / Writer for PHP</title>
      <link>http://snippets.dzone.com/posts/show/3128</link>
      <description>CSV Parser / Writer&lt;br /&gt;&lt;br /&gt;Example A:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//cell separator, row separator, value enclosure&lt;br /&gt;$csv = new CSV(';', "\r\n", '"');&lt;br /&gt;&lt;br /&gt;//parse the string content&lt;br /&gt;$csv-&gt;setContent(file_get_contents('data.csv'));&lt;br /&gt;&lt;br /&gt;//returns an array with the CSV data&lt;br /&gt;print_r($csv-&gt;getArray());&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Exemple B:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$csv = new CSV(';', "\r\n", '"');&lt;br /&gt;//sets up the content through an array&lt;br /&gt;$csv-&gt;setArray(&lt;br /&gt;	array(&lt;br /&gt;		array('col"una1', "colu\r\nna2"),&lt;br /&gt;		array('col;una3', 'coluna4')&lt;br /&gt;	)&lt;br /&gt;);&lt;br /&gt;//retorns string with the CSV representation&lt;br /&gt;print $csv-&gt;getContent();&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com&lt;br /&gt;class CSV{&lt;br /&gt;	var $cellDelimiter;&lt;br /&gt;	var $valueEnclosure;&lt;br /&gt;	var $rowDelimiter;&lt;br /&gt;&lt;br /&gt;	function CSV($cellDelimiter, $rowDelimiter, $valueEnclosure){&lt;br /&gt;		$this-&gt;cellDelimiter = $cellDelimiter;&lt;br /&gt;		$this-&gt;valueEnclosure = $valueEnclosure;&lt;br /&gt;		$this-&gt;rowDelimiter = $rowDelimiter;&lt;br /&gt;		$this-&gt;o = array();&lt;br /&gt;	}&lt;br /&gt;	function getArray(){&lt;br /&gt;		return $this-&gt;o;&lt;br /&gt;	}&lt;br /&gt;	function setArray($o){&lt;br /&gt;		$this-&gt;o = $o;&lt;br /&gt;	}&lt;br /&gt;	function getContent(){&lt;br /&gt;		if(!(($bl = strlen($b = $this-&gt;rowDelimiter)) &amp;&amp; ($dl = strlen($d = $this-&gt;cellDelimiter)) &amp;&amp; ($ql = strlen($q = $this-&gt;valueEnclosure))))&lt;br /&gt;			return '';&lt;br /&gt;		for($o = $this-&gt;o, $i = -1; ++$i &lt; count($o);){&lt;br /&gt;			for($e = 0, $j = -1; ++$j &lt; count($o[$i]);)&lt;br /&gt;				(($e = strpos($o[$i][$j], $q) !== false) || strpos($o[$i][$j], $b) !== false || strpos($o[$i][$j], $d) !== false)&lt;br /&gt;				&amp;&amp; $o[$i][$j] = $q . ($e ? str_replace($q, $q . $q, $o[$i][$j]) : $o[$i][$j]) . $q;&lt;br /&gt;			$o[$i] = implode($d, $o[$i]);&lt;br /&gt;		}&lt;br /&gt;		return implode($b, $o);&lt;br /&gt;	}&lt;br /&gt;	function setContent($s){&lt;br /&gt;		$this-&gt;o = array();&lt;br /&gt;		if(!strlen($s))&lt;br /&gt;			return true;&lt;br /&gt;		if(!(($bl = strlen($b = $this-&gt;rowDelimiter)) &amp;&amp; ($dl = strlen($d = $this-&gt;cellDelimiter)) &amp;&amp; ($ql = strlen($q = $this-&gt;valueEnclosure))))&lt;br /&gt;			return false;&lt;br /&gt;		for($o = array(array('')), $this-&gt;o = &amp;$o, $e = $r = $c = 0, $i = -1, $l = strlen($s); ++$i &lt; $l;){&lt;br /&gt;			if(!$e &amp;&amp; substr($s, $i, $bl) == $b){&lt;br /&gt;				$o[++$r][$c = 0] = '';&lt;br /&gt;				$i += $bl - 1;&lt;br /&gt;			}&lt;br /&gt;			elseif(substr($s, $i, $ql) == $q){&lt;br /&gt;				$e ? (substr($s, $i + $ql, $ql) == $q ?&lt;br /&gt;				$o[$r][$c] .= substr($s, $i += $ql, $ql) : $e = 0)&lt;br /&gt;				: (strlen($o[$r][$c]) == 0 ? $e = 1 : $o[$r][$c] .= substr($s, $i, $ql));&lt;br /&gt;				$i += $ql - 1;&lt;br /&gt;			}&lt;br /&gt;			elseif(!$e &amp;&amp; substr($s, $i, $dl) == $d){&lt;br /&gt;				$o[$r][++$c] = '';&lt;br /&gt;				$i += $dl - 1;&lt;br /&gt;			}&lt;br /&gt;			else&lt;br /&gt;				$o[$r][$c] .= $s[$i];&lt;br /&gt;		}&lt;br /&gt;		return true;&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;?&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 11 Dec 2006 22:36:10 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/3128</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>ProbabilityRandom //PHP Class</title>
      <link>http://snippets.dzone.com/posts/show/2451</link>
      <description>&lt;a href="http://www.phpclasses.org/browse/package/1940.html"&gt;&lt;br /&gt;Class to return items based on their probability.&lt;br /&gt;&lt;br /&gt;Updated version can be found here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;usage&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$prExample = new ProbabilityRandom;&lt;br /&gt;&lt;br /&gt;$prExample-&gt;add( 'I have more chances than everybody :]', 30 );&lt;br /&gt;$prExample-&gt;add( 'I have good chances', 10 );&lt;br /&gt;$prExample-&gt;add( 'I\'m difficult to appear...', 1 );&lt;br /&gt;&lt;br /&gt;for( $x=10; $x--; print $prExample-&gt;get() . '&lt;br /&gt;' );&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com&lt;br /&gt;class ProbabilityRandom {&lt;br /&gt;	#private vars&lt;br /&gt;	var&lt;br /&gt;		$data = array(),&lt;br /&gt;		$universe = 0;&lt;br /&gt;&lt;br /&gt;	#add an item to the list and defines its probability of being chosen&lt;br /&gt;	function add( $data, $probability ){&lt;br /&gt;		$this-&gt;data[ $x = sizeof( $this-&gt;data ) ] = new stdClass;&lt;br /&gt;		$this-&gt;data[ $x ]-&gt;value = $data;&lt;br /&gt;		$this-&gt;universe += $this-&gt;data[ $x ]-&gt;probability = abs( $probability );&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	#remove an item from the list&lt;br /&gt;	function remove( $index ){&lt;br /&gt;		if( $index &gt; -1 &amp;&amp; $index &lt; sizeof( $this-&gt;data ) ) {&lt;br /&gt;			$item = array_splice( $this-&gt;data, $index, 1 );&lt;br /&gt;			$this-&gt;universe -= $item-&gt;probability;&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	#clears the class&lt;br /&gt;	function clear(){&lt;br /&gt;		$this-&gt;universe = sizeof( $this-&gt;data = array() );&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	#return a randomized item from the list&lt;br /&gt;	function get(){&lt;br /&gt;		if( !$this-&gt;universe )&lt;br /&gt;			return null;&lt;br /&gt;		$x = round( mt_rand( 0, $this-&gt;universe ) );&lt;br /&gt;		$max = $i = 0;&lt;br /&gt;		do&lt;br /&gt;			$max += $this-&gt;data[ $i++ ]-&gt;probability;&lt;br /&gt;		while( $x &gt; $max );&lt;br /&gt;		return $this-&gt;data[ $i-1 ]-&gt;value;&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 20 Aug 2006 21:35:57 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2451</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>Exception class fix for php 4 //PHP Class</title>
      <link>http://snippets.dzone.com/posts/show/2450</link>
      <description>&lt;code&gt;&lt;br /&gt;if(!class_exists('Exception')){&lt;br /&gt;	class Exception{&lt;br /&gt;		var $_message = '';&lt;br /&gt;		var $_code = 0;&lt;br /&gt;		var $_line = 0;&lt;br /&gt;		var $_file = '';&lt;br /&gt;		var $_trace = null;&lt;br /&gt;&lt;br /&gt;		function Exception($message = 'Unknown exception', $code = 0){&lt;br /&gt;			$this-&gt;_message = $message;&lt;br /&gt;			$this-&gt;_code = $code;&lt;br /&gt;			$this-&gt;_trace = debug_backtrace();&lt;br /&gt;			$x = array_shift($this-&gt;_trace);&lt;br /&gt;			$this-&gt;_file = $x['file'];&lt;br /&gt;			$this-&gt;_line = $x['line'];&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		function __construct($message = 'Unknown exception', $code = 0){&lt;br /&gt;			$this-&gt;Exception($message, $code);&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		function getMessage(){&lt;br /&gt;			return $this-&gt;_message;&lt;br /&gt;		}&lt;br /&gt;		function getCode(){&lt;br /&gt;			return $this-&gt;_code;&lt;br /&gt;		}&lt;br /&gt;		function getFile(){&lt;br /&gt;			return $this-&gt;_file;&lt;br /&gt;		}&lt;br /&gt;		function getLine(){&lt;br /&gt;			return $this-&gt;_line;&lt;br /&gt;		}&lt;br /&gt;		function getTrace(){&lt;br /&gt;			return $this-&gt;_trace;&lt;br /&gt;		}&lt;br /&gt;		function getTraceAsString(){&lt;br /&gt;			$s = '';&lt;br /&gt;			foreach($this-&gt;_trace as $i=&gt;$item){&lt;br /&gt;				foreach($item['args'] as $j=&gt;$arg)&lt;br /&gt;					$item['args'][$j] = print_r($arg, true);&lt;br /&gt;				$s .= "#$i " . (isset($item['class']) ? $item['class'] . $item['type'] : '') . $item['function']&lt;br /&gt;				. '(' . implode(', ', $item['args']) . ") at [$item[file]:$item[line]]\n";&lt;br /&gt;			}&lt;br /&gt;			return $s;&lt;br /&gt;		}&lt;br /&gt;		function printStackTace(){&lt;br /&gt;			echo $this-&gt;getTraceAsString();&lt;br /&gt;		}&lt;br /&gt;		function toString(){&lt;br /&gt;			return $this-&gt;getMessage();&lt;br /&gt;		}&lt;br /&gt;		function __toString(){&lt;br /&gt;			return $this-&gt;toString();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 20 Aug 2006 21:29:55 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2450</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>Response::redirect //PHP Function</title>
      <link>http://snippets.dzone.com/posts/show/2449</link>
      <description>&lt;code&gt;&lt;br /&gt;class Response{&lt;br /&gt;	function redirect($url){&lt;br /&gt;		exit(header('Location: ' . $url));&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 20 Aug 2006 21:28:28 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2449</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
  </channel>
</rss>
