Harfleri (alt ve üst harf hem de) ve örneğin bu iki makaleleri numarasını içeren kısa URL'ler oluşturmak için kaynak kod örnekleri bulabilirsiniz:
İşte bu ikinci yazıda kullanılan kod kısmıdır (quoting):
$codeset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$base = strlen($codeset);
$n = 300;
$converted = "";
while ($n > 0) {
$converted = substr($codeset, ($n % $base), 1) . $converted;
$n = floor($n/$base);
}
echo $converted; // 4Q
Ve oldukça kolay bir fonksiyonu bu kozalayabilirsiniz - düşünmeye tek şey $n
, bir parametre olarak alınacak olmasıdır:
function shorten($n) {
$codeset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$base = strlen($codeset);
$converted = "";
while ($n > 0) {
$converted = substr($codeset, ($n % $base), 1) . $converted;
$n = floor($n/$base);
}
return $converted;
}
Ve bu şekilde çağırıyor:
$id = 123456;
$url = shorten($id);
var_dump($url);
Alacağınız:
string 'w7e' (length=3)
(You can also add some other characters, if needed -- depending on what you want to get in your URLs)
Edit after the comment :
(Ben kısalma kodu var olan) ikinci yazı ile okuma, un-kısalma yapar kodunu bulabilirsiniz.
Bir işlevi bu kodu Encapsulating da zor olmamalı, ve sana böyle bir şey alabilirsiniz:
function unshorten($converted) {
$codeset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$base = strlen($codeset);
$c = 0;
for ($i = strlen($converted); $i; $i--) {
$c += strpos($codeset, substr($converted, (-1 * ( $i - strlen($converted) )),1))
* pow($base,$i-1);
}
return $c;
}
Ve bir kısaltılmış-url ile çağırarak:
$back_to_id = unshorten('w7e');
var_dump($back_to_id);
Alacak:
int 123456