Shorten text

Wednesday, March 17th, 2010

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.

  1. // Shorten a text if nessecary
  2. function shortenText($txt='', $len=0){
  3.  
  4.         if(strlen($txt) > $len){
  5.  
  6.                 $txt = substr($txt, 0, $len);
  7.  
  8.                 $t = split("[\n\r\t ]+", $txt);
  9.                 $t = array_slice($t, 0, -1);
  10.                 $txt = join(' ', $t);
  11.  
  12.                 $txt .= '...';
  13.  
  14.         }
  15.  
  16.         return $txt;
  17. }

Display clean php code for copying

// Shorten a text if nessecary
function shortenText($txt='', $len=0){

	if(strlen($txt) > $len){

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

		$t = split("[\n\r\t ]+", $txt);
		$t = array_slice($t, 0, -1);
		$txt = join(' ', $t);

		$txt .= '...';

	}

	return $txt;
}

Rot13

Wednesday, March 17th, 2010

Basic rot13 function for PHP (remember that this is NOT secure encryption!).
It’s built into php nowadays, but if you have an old version you may not.

  1. // Rot 13 function for older php versions
  2. function rot13($text){
  3.         $length = strlen($text);
  4.         $newtext = '';
  5.          for($i = 0; $i < $length; $i++){
  6.                  $index = ord($text[$i]);
  7.                  // Rotate upper case.
  8.                  if($index > 64 && $index < 91){
  9.                          $index += 13;
  10.                          if($index > 90) $index -= 26;
  11.                          $newtext .= chr($index);
  12.                 // Rotate lower case.
  13.                 }elseif($index > 96 && $index < 123){
  14.                         $index += 13;
  15.                         if($index > 122) $index -= 26;
  16.                         $newtext .= chr($index);
  17.                  }else{ $newtext .= $text[$i]; }
  18.          }
  19.          return $newtext;
  20. }

Display clean php code for copying

// Rot 13 function for older php versions
function rot13($text){
	$length = strlen($text);
	$newtext = '';
	 for($i = 0; $i < $length; $i++){
		 $index = ord($text[$i]);
		 // Rotate upper case.
		 if($index > 64 && $index < 91){
			 $index += 13;
			 if($index > 90) $index -= 26;
			 $newtext .= chr($index);
		// Rotate lower case.
		}elseif($index > 96 && $index < 123){
			$index += 13;
			if($index > 122) $index -= 26;
			$newtext .= chr($index);
		 }else{ $newtext .= $text[$i]; }
	 }
	 return $newtext;
}

Make a random string

Wednesday, March 17th, 2010

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.

  1. // Make a random string
  2. function makeRandomString($length){
  3.         $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');
  4.         $nkeys = array_rand($str, $length);
  5.         $nstr = '';
  6.         foreach($nkeys as $key){ $nstr .= $str[$key]; }
  7.         return $nstr;
  8. }

Display clean php code for copying

// 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;
}

Make image version

Wednesday, March 17th, 2010

This is a function I use to make multiple versions such as thumbnails of uploaded images.
There’s three methods for resizing available in it (mask, fit & limit).

  1. // Function for making a new resized copy of a file
  2. // mask makes the shortest edge match the mask, so it will be bigger than the mask, always resizes!
  3. // fit makes the longest edge match, always resizes!
  4. // limit makes the image fit, but won't stretch if it's smaller.
  5. function makeImageVersion($newWidth, $newHeight, $filePath, $newName, $fileExtension, $method){
  6.  
  7.         // Find out the original size of the image
  8.         list($wO, $hO) = getimagesize($filePath);
  9.  
  10.         // Get the ratios it would take to resize
  11.         $wR = $newWidth / $wO;
  12.         $hR = $newHeight / $hO;
  13.  
  14.         // Figure out which ratio we need
  15.         switch($method){
  16.                 case 'mask':
  17.                         if($wR > $hR){ $ratio = $wR; }
  18.                         else{ $ratio = $hR; }
  19.                         break;
  20.                 case 'limit':
  21.                         if($wR < 1 && $wR < $hR){ $ratio = $wR; }
  22.                         elseif($hR < 1){ $ratio = $hR; }
  23.                         else{ $ratio = 1; }
  24.                         break;
  25.                 case 'fit':
  26.                 default:
  27.                         if($wR > $hR){ $ratio = $hR; }
  28.                         else{ $ratio = $wR; }
  29.                         break;
  30.         }
  31.  
  32.         $wN = round($wO * $ratio);
  33.         $hN = round($hO * $ratio);
  34.  
  35.         $iP = imagecreatetruecolor($wN, $hN);
  36.         imageAlphaBlending($iP, false);
  37.         imageSaveAlpha($iP, true);
  38.  
  39.         if($fileExtension == 'jpg'){ $iI = imagecreatefromjpeg($filePath); }
  40.         elseif($fileExtension == 'png'){        $iI = imagecreatefrompng($filePath); }
  41.         else{ $iI = imagecreatefromgif($filePath); }
  42.  
  43.         imagecopyresampled($iP, $iI, 0, 0, 0, 0, $wN, $hN, $wO, $hO);
  44.  
  45.         if($fileExtension == 'jpg'){ imagejpeg($iP, $newName, 90); }
  46.         elseif($fileExtension == 'png'){ imagepng($iP, $newName); }
  47.         else{ imagegif($iP, $newName); }
  48. }

Display clean php code for copying

// 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 > $hR){ $ratio = $wR; }
			else{ $ratio = $hR; }
			break;
		case 'limit':
			if($wR < 1 && $wR < $hR){ $ratio = $wR; }
			elseif($hR < 1){ $ratio = $hR; }
			else{ $ratio = 1; }
			break;
		case 'fit':
		default:
			if($wR > $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); }
}

File put contents

Wednesday, March 17th, 2010

file_put_contents() is in php nowadays, but if you’re on an old server you may need your own.
This simply checks if the function’s there, and if not it makes the function.

  1. // Replacement for file_put_contents if it doesn't exist
  2. if(!function_exists('file_put_contents')){
  3.         function file_put_contents($file, $data){
  4.                 $fp = fopen($file, 'w');
  5.                 fwrite($fp, $data);
  6.                 fclose($fp);
  7.         }
  8. }

Display clean php code for copying

// 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);
	}
}

Check url

Wednesday, March 17th, 2010

This is a function that checks to see if a url exists.
Not mine btw, but for the life of me I can’t remember where I got it.

  1. // Check if a url exists
  2. function isValidUrl($url){
  3.                 $url = @parse_url($url);
  4.  
  5.                 if ( ! $url) {
  6.                         return false;
  7.                 }
  8.  
  9.                 $url = array_map('trim', $url);
  10.                 $url['port'] = (!isset($url['port'])) ? 80 : (int)$url['port'];
  11.                 $path = (isset($url['path'])) ? $url['path'] : '';
  12.  
  13.                 if ($path == '')
  14.                 {
  15.                         $path = '/';
  16.                 }
  17.  
  18.                 $path .= ( isset ( $url['query'] ) ) ? "?$url[query]" : '';
  19.  
  20.                 if ( isset ( $url['host'] ) AND $url['host'] != gethostbyname ( $url['host'] ) )
  21.                 {
  22.                         if ( PHP_VERSION >= 5 )
  23.                         {
  24.                                 $headers = get_headers("$url[scheme]://$url[host]:$url[port]$path");
  25.                         }
  26.                         else
  27.                         {
  28.                                 $fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 30);
  29.  
  30.                                 if ( ! $fp )
  31.                                 {
  32.                                         return false;
  33.                                 }
  34.                                 fputs($fp, "HEAD $path HTTP/1.1\r\nHost: $url[host]\r\n\r\n");
  35.                                 $headers = fread ( $fp, 128 );
  36.                                 fclose ( $fp );
  37.                         }
  38.                         $headers = ( is_array ( $headers ) ) ? implode ( "\n", $headers ) : $headers;
  39.                         return ( bool ) preg_match ( '#^HTTP/.*\s+[(200|301|302)]+\s#i', $headers );
  40.                 }
  41.                 return false;
  42. }

Display clean php code for copying

// 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;
}

Make a safe url

Wednesday, March 17th, 2010

This is a function that checks a string and makes it work nicely for friendly urls

  1. // Make sure a url string is nicely formatted
  2. function makeSafeUrl($myUrl, $allowSpace=0, $allowCase=0){
  3.         $sSafe = 'abcdefghijklmnopqrstuvwxyz1234567890-_';
  4.         $disallowed = array();
  5.         $disallowed['c'] = 'ç';
  6.         $disallowed['n'] = 'ñ';
  7.         $disallowed['y'] = 'ýÿ';
  8.         $disallowed['e'] = 'èéêë';
  9.         $disallowed['a'] = 'àáâãäå';
  10.         $disallowed['o'] = 'ðóòôõöø';
  11.         $disallowed['u'] = 'ùúûü';
  12.         $disallowed['i'] = 'ìíîï';
  13.  
  14.         if(!$allowSpace) $disallowed['-'] = ' ';
  15.         if($allowSpace) $sSafe .= ' ';
  16.  
  17.         if($allowCase){
  18.                 $sSafe .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  19.                 $disallowed['C'] = 'Ç';
  20.                 $disallowed['N'] = 'Ñ';
  21.                 $disallowed['Y'] = 'ÝŸ';
  22.                 $disallowed['E'] = 'ÈÉÊË';
  23.                 $disallowed['A'] = 'ÀÁÂÃÄÅ';
  24.                 $disallowed['O'] = 'ÐÓÒÔÕÖØ';
  25.                 $disallowed['U'] = 'ÙÚÛÜ';
  26.                 $disallowed['I'] = 'ÌÍÎÏ';
  27.         }else{
  28.                 $myUrl = strtolower($myUrl);
  29.         }
  30.  
  31.         $newString = array();
  32.  
  33.         for($i = 0; $i $var){
  34.                                 if(stristr($var, $thisChar)){
  35.                                         $newString[$i] = $key;
  36.                                 }
  37.                         }
  38.                 }
  39.         }
  40.         return implode('', $newString);
  41. }

Display clean php code for copying

 // Make sure a url string is nicely formatted
function makeSafeUrl($myUrl, $allowSpace=0, $allowCase=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($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 $var){
				if(stristr($var, $thisChar)){
					$newString[$i] = $key;
				}
			}
		}
	}
	return implode('', $newString);
}

JQuery geshi

Wednesday, March 17th, 2010

Code highlighting using ajax with jquery and geshi

  1. $(document).ready(function(){
  2.  
  3.         // Initialise highlighting
  4.         if($('pre').length){
  5.                 $('pre').each(function(){
  6.                         highLight($(this));
  7.                 });
  8.         }
  9.  
  10. });
  11.  
  12. // Highlight item
  13. function highLight(thisItem){
  14.         snippet  = thisItem.html();
  15.         snippet = snippet.replace(/&amp;amp;/ig, escape('&'));
  16.         snippet = snippet.replace(/&lt;/ig, '<');
  17.         snippet = snippet.replace(/&gt;/ig, '>');
  18.         language = thisItem.attr('class');
  19.         $.ajax({
  20.                 type: "POST",
  21.                 url: '/scripts/highlight.php',
  22.                 data: 'language='+language+'&snippet='+snippet,
  23.                 dataType: "html",
  24.                 success: function(msg){
  25.                         if (msg){
  26.                                 msg = msg.replace('&amp;', '&');
  27.                                 thisItem.after(msg);
  28.                                 thisItem.hide();
  29.                         }
  30.                 }
  31.         });
  32. }

Display clean javascript code for copying

$(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;/ig, escape('&'));
	snippet = snippet.replace(/&lt;/ig, '<');
	snippet = snippet.replace(/&gt;/ig, '>');
	language = thisItem.attr('class');
	$.ajax({
		type: "POST",
		url: '/scripts/highlight.php',
		data: 'language='+language+'&snippet='+snippet,
		dataType: "html",
		success: function(msg){
			if (msg){
				msg = msg.replace('&amp;', '&');
				thisItem.after(msg);
				thisItem.hide();
			}
		}
	});
}

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.', '');
}