Check Domain

<?php

/**
 * check_domain
 *
 * Check a domain name against a whitelist and blacklist.
 *
 * @version 0.1
 * @author Contributors at eXorithm
 * @link /algorithm/view/check_domain Listing at eXorithm
 * @link /algorithm/history/check_domain History at eXorithm
 * @license /home/show/license
 *
 * @param mixed $url 
 * @param array $white_list 
 * @param array $black_list 
 * @return bool
 */
function check_domain($url='',$white_list=array(0=>'*.gov',1=>'*.gov.ru'),$black_list=array(0=>'*.nk',1=>'*.ru'))
{
	foreach ($white_list as $re) {
		$re = preg_quote($re);
		$re = str_replace('\*', '.*', $re);
		
		if (preg_match('|^'.$re.'$|', $url)) {
			return true;
		}
	}
	
	foreach ($black_list as $re) {
		$re = preg_quote($re);
		$re = str_replace('\*', '.*', $re);
		
		if (preg_match('|^'.$re.'$|', $url)) {
			return false;
		}
	}
	
	return true;
}

?>

Sum List

<?php

/**
 * sum_list
 *
 * Sum up the numbers in an array.
 *
 * @version 0.1
 * @author Contributors at eXorithm
 * @link /algorithm/view/sum_list Listing at eXorithm
 * @link /algorithm/history/sum_list History at eXorithm
 * @license /home/show/license
 *
 * @param array $numbers 
 * @return number
 */
function sum_list($numbers=array(0=>'2',1=>'4',2=>'12',3=>'1'))
{
	return array_sum($numbers);
}

?>

Round Corners

<?php

/**
 * round_corners
 *
 * Round the corners of an image. Transparency and anti-aliasing are supported.
 *
 * @version 0.2
 * @author Contributors at eXorithm
 * @link /algorithm/view/round_corners Listing at eXorithm
 * @link /algorithm/history/round_corners History at eXorithm
 * @license /home/show/license
 *
 * @param resource $image (GD image) 
 * @param number $radius Radius of the rounded corners.
 * @param string $color (hex color code) Color of the background.
 * @param mixed $transparency Level of transparency. 0 is no transparency, 127 is full transparency.
 * @return resource GD image
 */
function round_corners($image=null,$radius=20,$color='ffffff',$transparency='127')
{
	$width = imagesx($image);
	$height = imagesy($image);
	
	$image2 = imagecreatetruecolor($width, $height);
	
	imagesavealpha($image2, true);
	imagealphablending($image2, false);
	
	imagecopy($image2, $image, 0, 0, 0, 0, $width, $height);
	
	
	
	$full_color = allocate_color($image2, $color, $transparency);
	
	// loop 4 times, for each corner...
	for ($left=0;$left<=1;$left++) {
		for ($top=0;$top<=1;$top++) {
			
			$start_x = $left * ($width-$radius);
			$start_y = $top * ($height-$radius);
			$end_x = $start_x+$radius;
			$end_y = $start_y+$radius;
			
			$radius_origin_x = $left * ($start_x-1) + (!$left) * $end_x;
			$radius_origin_y = $top * ($start_y-1) + (!$top) * $end_y;
			
			for ($x=$start_x;$x<$end_x;$x++) {
				for ($y=$start_y;$y<$end_y;$y++) {
					$dist = sqrt(pow($x-$radius_origin_x,2)+pow($y-$radius_origin_y,2));
					
					if ($dist>($radius+1)) {
						imagesetpixel($image2, $x, $y, $full_color);
					} else {
						if ($dist>$radius) {
						  $pct = 1-($dist-$radius);
						  $color2 = antialias_pixel($image2, $x, $y, $full_color, $pct);
						  imagesetpixel($image2, $x, $y, $color2);
						}
					}
				}
			}
			
		}
	}
	
	return $image2;
}

/**
 * allocate_color
 *
 * Helper function to allocate a color to an image. Color should be a 6-character hex string.
 *
 * @version 0.2
 * @author Contributors at eXorithm
 * @link /algorithm/view/allocate_color Listing at eXorithm
 * @link /algorithm/history/allocate_color History at eXorithm
 * @license /home/show/license
 *
 * @param resource $image (GD image) The image that will have the color allocated to it.
 * @param string $color (hex color code) The color to allocate to the image.
 * @param mixed $transparency The level of transparency from 0 to 127.
 * @return mixed
 */
function allocate_color($image=null,$color='268597',$transparency='0')
{
	if (preg_match('/[0-9ABCDEF]{6}/i', $color)==0) {
		throw new Exception("Invalid color code.");
	}
	if ($transparency<0 || $transparency>127) {
		throw new Exception("Invalid transparency.");
	}
	
	$r  = hexdec(substr($color, 0, 2));
	$g  = hexdec(substr($color, 2, 2));
	$b  = hexdec(substr($color, 4, 2));
	if ($transparency>127) $transparency = 127;
	
	if ($transparency<=0)
		return imagecolorallocate($image, $r, $g, $b);
	else
		return imagecolorallocatealpha($image, $r, $g, $b, $transparency);
}

/**
 * antialias_pixel
 *
 * Helper function to apply a certain weight of a certain color to a pixel in an image. The index of the resulting color is returned. 
 *
 * @version 0.1
 * @author Contributors at eXorithm
 * @link /algorithm/view/antialias_pixel Listing at eXorithm
 * @link /algorithm/history/antialias_pixel History at eXorithm
 * @license /home/show/license
 *
 * @param resource $image (GD image) The image containing the pixel.
 * @param number $x X-axis position of the pixel.
 * @param number $y Y-axis position of the pixel.
 * @param number $color The index of the color to be applied to the pixel.
 * @param number $weight Should be between 0 and 1,  higher being more of the original pixel color, and 0.5 being an even mixture.
 * @return mixed
 */
function antialias_pixel($image=null,$x=0,$y=0,$color=0,$weight=0.5)
{
	$c = imagecolorsforindex($image, $color);
	$r1 = $c['red'];
	$g1 = $c['green'];
	$b1 = $c['blue'];
	$t1 = $c['alpha'];
	
	$color2 = imagecolorat($image, $x, $y);
	$c = imagecolorsforindex($image, $color2);
	$r2 = $c['red'];
	$g2 = $c['green'];
	$b2 = $c['blue'];
	$t2 = $c['alpha'];
	
	$cweight = $weight+($t1/127)*(1-$weight)-($t2/127)*(1-$weight);
	
	$r = round($r2*$cweight + $r1*(1-$cweight));
	$g = round($g2*$cweight + $g1*(1-$cweight));
	$b = round($b2*$cweight + $b1*(1-$cweight));
	
	$t = round($t2*$weight + $t1*(1-$weight));
	
	return imagecolorallocatealpha($image, $r, $g, $b, $t);
}

?>

Fibonacci Binet

<?php

/**
 * fibonacci_binet
 *
 * Simple example of Fibonacci series algorithm using Binet
 *
 * @version 0.3
 * @author Contributors at eXorithm
 * @link /algorithm/view/fibonacci_binet Listing at eXorithm
 * @link /algorithm/history/fibonacci_binet History at eXorithm
 * @license /home/show/license
 *
 * @param number $n 
 * @return mixed
 */
function fibonacci_binet($n=13)
{
	$phi = (1 + sqrt(5)) / 2;
	$u = (pow($phi, $n) - pow(1 - $phi, $n)) / sqrt(5);
	return $u;
}

?>