Как встроить пуникод в мой код?

Тема в разделе "Как сделать...", создана пользователем dlipov, 28 июл 2012.

  1. dlipov

    dlipov Создатель

    Регистр.:
    28 июл 2011
    Сообщения:
    36
    Симпатии:
    35
    Скачал значит я скрипт "Сервис коротких ссылок" - установил, все прекрасно и без ненужных мне наворотов, но как всегда подвох в халяве. Проблема заключается в том, что кириллические домены в бд добавляются, но в итоге редирект с этой короткой ссылки идет не на этот самый домен кириллический, а в пустоту. Решил бороться с этим при помощи punycode. В связи не хватки опыта в php не могу выполнить, как мне кажется довольно таки легкую задачу. И очень надеюсь на вашу помощь.

    Задача состоит в том, чтобы встроить в код моего сервиса - код скрипта пуникода. Я планирую, что ссылки которые будут добавляться в кириллице будут кодироваться в
    punycode и уже в таком виде храниться в бд.


    Есть следующая часть кода:
    PHP:
    if ( $protocol_ok && $lilurl->add_url($longurl) )
        {
            if ( 
    REWRITE // mod_rewrite style link
            
    {
                
    $url 'http://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['PHP_SELF']).$lilurl->get_id($longurl);
            }
            else 
    // regular GET style link
            
    {
                
    $url 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?id='.$lilurl->get_id($longurl);
            }
     
            
    $msg '<br><b><font size="5">Ваша короткая ссылка: <a href="'.$url.'" target="_blank">'.$url.'</a></font></br></b>';
        }
        elseif ( !
    $protocol_ok )
        {
            
    $msg '<br><b><font color="red" size="5">Неправильно введены данные.<br>Попробуйте еще раз.</font></b><br>';
        }
        else
        {
            
    $msg '<br><b><font color="red" size="5">Неправильно введены данные.<br>Попробуйте еще раз.</font></b><br>';
        }
    }
    else ...
    Данная часть отвечает за добавление ссылки в базу данных.
    url - поле юрл, в котором хранятся полные ссылки




    Далее представлен код, который нужно вставить в мой скрипт.


    В него нужно вставить:
    PHP:
    require_once('idna_convert.class.php');
    $IDN = new idna_convert();
    $domain 'пример.рф';
    $input $IDN->encode($domain);
    echo 
    $input;
    Данный код отвечает за конвертацию кириллических доменов в punycode.

    Его я нашел тут - http://a2x.ru/?p=124
    Проверил, он работает. Но встроить так и не получилось, надеюсь на Вас.


    Заранее благодарен за помощь.
     
  2. Aisy

    Aisy Постоялец

    Регистр.:
    16 ноя 2011
    Сообщения:
    73
    Симпатии:
    2
    Возможно в этом проблема?
    Надеюсь, ваша проблема была решена.
     
  3. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.549
    Симпатии:
    1.432
    Судя по всему, добавление url происходит в самой первой строке, кодом $lilurl->add_url($longurl) вставь перед
    if ( $protocol_ok && $lilurl->add_url($longurl) )
    код:
    PHP:
    require_once('idna_convert.class.php');
    $IDN = new idna_convert();
    $longurl $IDN->encode$longurl ); 
     
     
  4. Andipas

    Andipas Постоялец

    Регистр.:
    5 дек 2007
    Сообщения:
    130
    Симпатии:
    92