1、将原网址通过MD5转化成一串小字母,这种方法简单,但是这种算法是不可逆的,所以别想着直接反转短地址,如果你想深入了解这种算法,可以百度“MD5”+”网址缩短”
2、数据库类型的存储式,通过给每个长网址自动分配ID和CODE来实现网址的转换,然后当用户访问时,通过查询数据里面ID和CODE对应的原网址,实现实时跳转。这种方式是可逆的,而且便于管理和统计,目前主流的网址缩短程序都是应用的这种方式,如:phurl,yourl,suo.nz网址缩短。

PHP实现网址缩短的代码如下:
function get_last_number() {
$db_result = mysql_query("SELECT last_number FROM ".DB_PREFIX."settings") or db_die(__FILE__, __LINE__, mysql_error());
$db_row = mysql_fetch_row($db_result);
return $db_row[0];
}
function increase_last_number() {
mysql_query("UPDATE ".DB_PREFIX."settings SET last_number = (last_number + 1)") or db_die(__FILE__, __LINE__, mysql_error());
return (mysql_affected_rows() > 0) ? true : false;
}
function code_exists($code) {
$db_result = mysql_query("SELECT COUNT(id) FROM ".DB_PREFIX."urls WHERE BINARY code = '$code'") or db_die(__FILE__, __LINE__, mysql_error());
$db_row = mysql_fetch_row($db_result);
return ($db_row[0] > 0) ? true : false;
}
function alias_exists($alias) {
$db_result = mysql_query("SELECT COUNT(id) FROM ".DB_PREFIX."urls WHERE BINARY alias = '$alias'") or db_die(__FILE__, __LINE__, mysql_error());
$db_row = mysql_fetch_row($db_result);
return ($db_row[0] > 0) ? true : false;
}
function url_exists($url) {
$db_result = mysql_query("SELECT id, code, alias FROM ".DB_PREFIX."urls WHERE url LIKE '$url'") or db_die(__FILE__, __LINE__, mysql_error());
if (mysql_num_rows($db_result) > 0) {
return mysql_fetch_row($db_result);
}
return false;
}
function generate_code($number) {
$out = "";
$codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ";
while ($number > 53) {
$key = $number % 54;
$number = floor($number / 54) - 1;
$out = $codes{$key}.$out;
}
return $codes{$number}.$out;
}
function insert_url($url, $code, $alias) {
mysql_query("INSERT INTO ".DB_PREFIX."urls (url, code, alias, date_added) VALUES ('$url', '$code', '$alias', NOW())") or db_die(__FILE__, __LINE__, mysql_error());
return mysql_insert_id();
}
function update_url($id, $alias) {
mysql_query("UPDATE ".DB_PREFIX."urls SET alias = '$alias' WHERE id = '$id'") or db_die(__FILE__, __LINE__, mysql_error());
}
function get_url($alias) {
$db_result = mysql_query("SELECT url FROM ".DB_PREFIX."urls WHERE BINARY code = '$alias' OR alias = '$alias'") or db_die(__FILE__, __LINE__, mysql_error());
if (mysql_num_rows($db_result) > 0) {
$db_row = mysql_fetch_row($db_result);
return $db_row[0];
}
return false;
}
function get_hostname() {
$data = parse_url(SITE_URL);
return $data['host'];
}
function get_domain() {
$hostname = get_hostname();
preg_match("/.([^/]+)/", $hostname, $domain);
return $domain[1];
}