четверг, 19 августа 2010 г.

Как укоротить текст до 10 символов?

И так задача: http://pyha.ru/forum/topic/4916. Необходимо ссылку /some-link-with-fabulous-text сократить до 10 символов.

Первое, что мне приходить в голову это архивирование, но текст слишком маленький и архив получиться очень большой. По этому этот вариант отпадает. 
И я решаюсь на хэш-таблицы, где ключ - это будет уникальный хэш в 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>';

Исходный код классов и интерфейса можно скачать отсюда

Комментариев нет:

Отправить комментарий