Первое, что мне приходить в голову это архивирование, но текст слишком маленький и архив получиться очень большой. По этому этот вариант отпадает.
И я решаюсь на хэш-таблицы, где ключ - это будет уникальный хэш в 10 символов, а значение - длинная ссылка. Пример реализации приведу на файлах, вы сможете сделать тоже самое использую субд или другое хранилище. Для этого вам придется всего лишь реализовать интерфейс IHashTable и передать его в объект класса ShortifyUri.
Пример рабочего кода:
<?php
// including library
require_once 'shortify-uri.php';
// creating shortifier instance
$shortifier = new UriShortifier(
new FileHashTable('data.txt'));
// prepare uris`
$uris = array(
'some-long-uri-with-text',
'not-so-long-uri',
'less-little-uri');
// shortifing uris`
$keys = array();
echo '<pre>';
foreach ($uris as $uri) {
$key = $shortifier->
shortify($uri);
echo "Before shortifing: {$uri},
after {$key} \n";
$keys[] = $key;
}
// unshortifing uris`
foreach ($keys as $key) {
$uri = $shortifier->
unshortify($key);
echo "Before {$key}
after {$uri} \n";
}
echo '</pre>';
Исходный код классов и интерфейса можно скачать отсюда.
Комментариев нет:
Отправить комментарий