Make a safe url

Wednesday, March 17th, 2010

This is a function that makes a string url safe.
Nice for creating friendly urls that are actually friendly.

  1. // Function for making sure text only uses url safe symbols
  2. function makeSafe(thisText, allowSpace){
  3.         var w = "!@#$%^&*()+=[]\\\';,./{}|\":<>?";
  4.         var s = 'abcdefghijklmnopqrstuvwxyz0123456789-_';
  5.         var x = new Array('àáâãäå', 'ç', 'èéêë', 'ìíîï', 'ñ', 'ðóòôõöø', 'ùúûü', 'ýÿ');
  6.         var r = new Array('a', 'c', 'e', 'i', 'n', 'o', 'u', 'y');
  7.  
  8.         if(allowSpace){
  9.                 s = s + ' ';
  10.         }
  11.  
  12.         thisText = thisText.toLowerCase();
  13.         var newText = new Array();
  14.  
  15.         for (i = 0; i < thisText.length; i++){
  16.                 thisChar = thisText.charAt(i);
  17.                 if(w.indexOf(thisChar) == -1){
  18.                         if(s.match(''+thisChar+'')){
  19.                                 newText[i] = thisChar;
  20.                         }else{
  21.                                 for (j = 0; j < x.length; j++){
  22.                                         if(x[j].match(thisChar)){
  23.                                                 newText[i] = r[j];
  24.                                         }
  25.                                 }
  26.                         }
  27.                 }
  28.         }
  29.  
  30.         return newText.join('');
  31. }

Display clean javascript code for copying

// Function for making sure text only uses url safe symbols
function makeSafe(thisText, allowSpace){
	var w = "!@#$%^&*()+=[]\\\';,./{}|\":<>?";
	var s = 'abcdefghijklmnopqrstuvwxyz0123456789-_';
	var x = new Array('àáâãäå', 'ç', 'èéêë', 'ìíîï', 'ñ', 'ðóòôõöø', 'ùúûü', 'ýÿ');
	var r = new Array('a', 'c', 'e', 'i', 'n', 'o', 'u', 'y');

	if(allowSpace){
		s = s + ' ';
	}

	thisText = thisText.toLowerCase();
	var newText = new Array();

	for (i = 0; i < thisText.length; i++){
		thisChar = thisText.charAt(i);
		if(w.indexOf(thisChar) == -1){
			if(s.match(''+thisChar+'')){
				newText[i] = thisChar;
			}else{
				for (j = 0; j < x.length; j++){
					if(x[j].match(thisChar)){
						newText[i] = r[j];
					}
				}
			}
		}
	}

	return newText.join('');
}

Find root folder

Wednesday, March 17th, 2010

I use this tiny snippet that uses jquery to find the root folder of my website.
It assumes jquery.js is included in the page.
It’s usefull for finding out where to post ajax stuff to (so you have a complete root).

For this website it would look in the header of the html for:
<script type="text/javascript" src="http://www.macouno.com/js/jquery.js"></script>

  1. // Get the source directory of this script
  2. root = $('script[@src$=jquery.js]').attr('src').replace('js/jquery.js', '');
  3. if(!location.href.match('www')){
  4.         root = root.replace('www.', '');
  5. }

Display clean javascript code for copying

// Get the source directory of this script
root = $('script[@src$=jquery.js]').attr('src').replace('js/jquery.js', '');
if(!location.href.match('www')){
	root = root.replace('www.', '');
}

Add to tinymce

Wednesday, March 17th, 2010

Because I will forget unless I save a copy here.
This is a very basic function for adding a string to tinymce (I use it to add images that are listed elsewhere on a page).

  1. // Adding content to the end of the tinymce editor
  2. function addToTiny(newContent){
  3.         var inst = tinyMCE;
  4.         inst.execCommand('mceFocus',false,'content');
  5.         inst.execCommand('mceInsertContent', true, newContent);
  6. }

Display clean javascript code for copying

// Adding content to the end of the tinymce editor
function addToTiny(newContent){
	var inst = tinyMCE;
	inst.execCommand('mceFocus',false,'content');
	inst.execCommand('mceInsertContent', true, newContent);
}

Is valid page

Wednesday, March 17th, 2010

A little function I use to double check the items in a friendly url to see if they only use valid characters.

  1. // Check if the page name is correct
  2. function isValidPage($page){
  3.         $safe = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '_', '.');
  4.         $pageCheck = preg_split('//', strtolower($page), -1, PREG_SPLIT_NO_EMPTY);
  5.  
  6.         // Make sure that the page name has only safe variables
  7.         foreach($pageCheck as $key => $val){
  8.                 if(!in_array($val, $safe)) return false;
  9.         }
  10.         return true;
  11. }

Display clean php code for copying

// Check if the page name is correct
function isValidPage($page){
	$safe = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '_', '.');
	$pageCheck = preg_split('//', strtolower($page), -1, PREG_SPLIT_NO_EMPTY);

	// Make sure that the page name has only safe variables
	foreach($pageCheck as $key => $val){
		if(!in_array($val, $safe)) return false;
	}
	return true;
}

Is date

Wednesday, March 17th, 2010

See if a string is actually a date (used for friendly urls mostly)

  1. // See if a string from the url is an actual date
  2. function isDate($var){
  3.         $time = strtotime(str_replace('-', ' ', $var));
  4.         if($time){
  5.                 if(strlen($var) == 8){
  6.                         return Array('month', $var, $time);
  7.                 }elseif(strlen($var) == 11){
  8.                         return Array('day', $var, $time);
  9.                 }
  10.         }
  11.         return false;
  12. }

Display clean php code for copying

// See if a string from the url is an actual date
function isDate($var){
	$time = strtotime(str_replace('-', ' ', $var));
	if($time){
		if(strlen($var) == 8){
			return Array('month', $var, $time);
		}elseif(strlen($var) == 11){
			return Array('day', $var, $time);
		}
	}
	return false;
}
click here to close

Help keep these files free,
and support further development!