Convert plain text url’s to clickable links

Just copy this function and make your links clickable

function plain_url_to_link($string) {
    return preg_replace(
    '%(https?|ftp)://([-A-Z0-9./_*?&;=#]+)%i',
    '<a target="blank" rel="nofollow" href="$0" target="_blank">$0</a>', $string);
}
$str = "https://www.google.com is a search website, you can also visit yahoo.com and http://twitter.com";
echo plain_url_to_link($str);

Remove directory and all its content in PHP

To recursively delete all the contents in the directory and then the directory itself. This function checks for files and sub directories and delete them first before deleting the main folder.

$directory      = "uploads";
 
if(is_dir($directory)){
	recursiveRemoveDirectory($directory);
}
 
function recursiveRemoveDirectory($directory) {
    foreach(glob("{$directory}/*") as $file) {
        if(is_dir($file)) {
            recursiveRemoveDirectory($file);
        } else {
            unlink($file);
        }
    }
    rmdir($directory);
}

Unzip a Zip File in PHP

Here is the code to unzip a Zip file using php and store it to another location.

<?php
function unzip($location,$newLocation) {
	if(exec("unzip ".$location, $arr)) {
		mkdir($newLocation);
		for($i = 1; $i< count($arr); $i++){
			$file = trim(preg_replace("~inflating: ~","",$arr[$i]));
			copy($location.'/'.$file, $newLocation.'/'.$file);
			unlink($location.'/'.$file);
		}
		return TRUE;
	} else {
		return FALSE;
	}
}

if( unzip('zipedfiles/test.zip', 'unziped/myNewZip') ) {
	echo 'Success!';
} else {
	echo 'Error';
}
?>

Get Country By IP Address in PHP

How to Get Country By IP Address in PHP ?

Here is the simple solution to that.

<?php
function getLocationInfoByIp(){
	$client = @$_SERVER['HTTP_CLIENT_IP'];
	$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
	$remote = @$_SERVER['REMOTE_ADDR'];
	$result = array('country'=>'', 'city'=>'');
	if(filter_var($client, FILTER_VALIDATE_IP)){
		$ip = $client;
	}elseif(filter_var($forward, FILTER_VALIDATE_IP)){
		$ip = $forward;
	}else{
		$ip = $remote;
	}
	$ip_data = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip));
	if($ip_data && $ip_data->geoplugin_countryName != null) {
		$result['country'] = $ip_data->geoplugin_countryCode;
		$result['city'] = $ip_data->geoplugin_city;
	}
	return $result;
}
$result = getLocationInfoByIp();

echo $result['country']." -> ".$result['city'];
?>

Output is

IN -> Ghaziabad

Detecting Device Type in a web application: Mobile, Tablet or Desktop

To check whether the request is coming from mobile, tablet or desktop.

function detectDevice() {
	$tablet_browser = 0;
	$mobile_browser = 0;
	
	if (preg_match('/(tablet|ipad|playbook)|(android(?!.*(mobi|opera mini)))/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
		$tablet_browser++;
	}
	
	if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android|iemobile)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
		$mobile_browser++;
	}
	
	if ((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') > 0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
		$mobile_browser++;
	}
	
	$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 4));
	$mobile_agents = array(
		'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
		'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
		'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
		'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
		'newt','noki','palm','pana','pant','phil','play','port','prox',
		'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
		'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
		'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
		'wapr','webc','winw','winw','xda ','xda-');
	 
	if (in_array($mobile_ua,$mobile_agents)) {
		$mobile_browser++;
	}

	if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'opera mini') > 0) {
		$mobile_browser++;
		//Check for tablets on opera mini alternative headers
		$stock_ua = strtolower(isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA']) ? $_SERVER['HTTP_X_OPERAMINI_PHONE_UA'] : (isset($_SERVER['HTTP_DEVICE_STOCK_UA']) ? $_SERVER['HTTP_DEVICE_STOCK_UA'] : ''));
		if (preg_match('/(tablet|ipad|playbook)|(android(?!.*mobile))/i', $stock_ua)) {
			$tablet_browser++;
		}
	}
	 
	if ($tablet_browser > 0) {
	   $device = 'tablet';
	} else if ($mobile_browser > 0) {
	   $device = 'mobile';
	} else {
	   $device = 'desktop';
	}
	return $device;
}

Now call this function wherever you need it.

echo detectDevice();