Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Как сделать транслитерацию url на php?

Тема в разделе "Свободное общение", создана пользователем europa1988, 25 авг 2021.

25.08.21 в 19:34
26.08.21 в 10:05
12
713
0
  1. TopicStarter Overlay
    europa1988

    europa1988 Бывалый

    Регистрация:
    24 фев 2016
    Сообщения:
    613
    Лучших ответов:
    2
    Рейтинги:
    +113 / 11 / -0
    Всем привет! Помогите разобраться с транслитом URL адресов в скрипте на PHP, есть функция формирования урлов и функция взятая из интернета для транслитерации, и я никак не могу написать из этой функции нормальную для транслита.
     

    Вложения:

  2. Pr00f

    Pr00f Бывалый

    Регистрация:
    4 фев 2019
    Сообщения:
    405
    Лучших ответов:
    0
    Рейтинги:
    +164 / 12 / -0
    что конкретно не получается?
    функция, конечно, посредственная и тот еще говнокод, но в целом работает.

    Код:
    $text = 'текст для перевода';
    $translated = get_url_text(TranslitURL($text), 300);
    echo $translated;
    
    вернет - tekst-dlya-perevoda
     
  3. TopicStarter Overlay
    europa1988

    europa1988 Бывалый

    Регистрация:
    24 фев 2016
    Сообщения:
    613
    Лучших ответов:
    2
    Рейтинги:
    +113 / 11 / -0
    Я PHP не особо шарю, знаю что верхняя функция формирует урл, ранше делал из этого кода транслит, сейчас не помню как делал
     
  4. Pr00f

    Pr00f Бывалый

    Регистрация:
    4 фев 2019
    Сообщения:
    405
    Лучших ответов:
    0
    Рейтинги:
    +164 / 12 / -0
    там 2 функции. одна обрезает текст и заменяет проблемы. вторая заменяет кирилицу на латинские буквы
    если надо перевести только текст, тогда вызывай 2-ю функцию. если нужно полностьб обработать урл - тогда вызывай обе функции. пример я привел выше
     
  5. TopicStarter Overlay
    europa1988

    europa1988 Бывалый

    Регистрация:
    24 фев 2016
    Сообщения:
    613
    Лучших ответов:
    2
    Рейтинги:
    +113 / 11 / -0
    Я не знаю как сделать, по этому и пишу, мне нужно наглядно
     
  6. Kandi

    Kandi Бывалый

    Регистрация:
    19 апр 2019
    Сообщения:
    309
    Лучших ответов:
    1
    Рейтинги:
    +75 / 26 / -0
    А что надо транслитить? Вроде выше пример нормальный
     
  7. TopicStarter Overlay
    europa1988

    europa1988 Бывалый

    Регистрация:
    24 фев 2016
    Сообщения:
    613
    Лучших ответов:
    2
    Рейтинги:
    +113 / 11 / -0
    Есть иностранный скрипт и как у иностранцев принято: они не делают транслит ссылок, так как пишут на английском, а если писать в нем допустим тайтлы на русском, то в поиски ссылки получаются корявые, это плохо для СЕО, вот я и хочу реализовать вывод ссылок английскими буквами, раньше я как то делал и транслит работал, но прошло много времени и я ни*уя не помню как сделать эти функции, если бы кто помог, то я бы скинул полный файл .php в личку
     
  8. TopicStarter Overlay
    europa1988

    europa1988 Бывалый

    Регистрация:
    24 фев 2016
    Сообщения:
    613
    Лучших ответов:
    2
    Рейтинги:
    +113 / 11 / -0
  9. ZULI

    ZULI Бывалый

    Регистрация:
    16 ноя 2016
    Сообщения:
    926
    Лучших ответов:
    1
    Рейтинги:
    +248 / 29 / -0
    А типа такого не?

    Код:
    <?php
      function translit($str) {
        $rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
    $lat = array('A', 'B', 'V', 'G', 'D', 'E', 'E', 'Gh', 'Z', 'I', 'Y', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Sch', 'Y', 'Y', 'Y', 'E', 'Yu', 'Ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', 'y', 'y', 'y', 'e', 'yu', 'ya');
        return str_replace($rus, $lat, $str);
      }
      echo translit("Всем привет!");
    ?>
    
     
  10. TopicStarter Overlay
    europa1988

    europa1988 Бывалый

    Регистрация:
    24 фев 2016
    Сообщения:
    613
    Лучших ответов:
    2
    Рейтинги:
    +113 / 11 / -0
    Да типо такого, нужно написать функцию формирования транслитерироанных урлов
     
  11. ZULI

    ZULI Бывалый

    Регистрация:
    16 ноя 2016
    Сообщения:
    926
    Лучших ответов:
    1
    Рейтинги:
    +248 / 29 / -0
  12. TopicStarter Overlay
    europa1988

    europa1988 Бывалый

    Регистрация:
    24 фев 2016
    Сообщения:
    613
    Лучших ответов:
    2
    Рейтинги:
    +113 / 11 / -0
    Только она не работает, ошибка 500
     
  13. TopicStarter Overlay
    europa1988

    europa1988 Бывалый

    Регистрация:
    24 фев 2016
    Сообщения:
    613
    Лучших ответов:
    2
    Рейтинги:
    +113 / 11 / -0
    Сделал так, код все отрабатывает(транслит урлов происходит), только вот правильно или нет?! Помогите разобраться!

    PHP:
    function get_url_text($string$length 10) {
        
    $string htmlspecialchars_decode($stringENT_QUOTES);
        
    $string preg_replace('/[^\\pL\d]+/u''-'$string);
        
    $string trim($string'-');
        
    $words explode("-",$string);
       
        
    $replace = array(
            
    "'"=>"""`"=>"",
            
    "а"=>"a","А"=>"a""б"=>"b","Б"=>"b""в"=>"v","В"=>"v""г"=>"g","Г"=>"g""д"=>"d","Д"=>"d",
            
    "е"=>"e","Е"=>"e""ж"=>"zh","Ж"=>"zh""з"=>"z","З"=>"z""и"=>"i","И"=>"i""й"=>"y","Й"=>"y",
            
    "к"=>"k","К"=>"k""л"=>"l","Л"=>"l""м"=>"m","М"=>"m""н"=>"n","Н"=>"n""о"=>"o","О"=>"o",
            
    "п"=>"p","П"=>"p""р"=>"r","Р"=>"r""с"=>"s","С"=>"s""т"=>"t","Т"=>"t""у"=>"u","У"=>"u",
            
    "ф"=>"f","Ф"=>"f""х"=>"h","Х"=>"h""ц"=>"c","Ц"=>"c""ч"=>"ch","Ч"=>"ch""ш"=>"sh","Ш"=>"sh",
            
    "щ"=>"sch","Щ"=>"sch""ъ"=>"","Ъ"=>"""ы"=>"y","Ы"=>"y""ь"=>"","Ь"=>"""э"=>"e","Э"=>"e",
            
    "ю"=>"yu","Ю"=>"yu""я"=>"ya","Я"=>"ya""і"=>"i","І"=>"i""ї"=>"yi","Ї"=>"yi""є"=>"e","Є"=>"e"
        
    );
       
        if(
    count($words) > $length) {
            
    $string "";
            for(
    $i 0$i $length$i++) {
                
    $string .= "-".$words[$i];
            }
            
    $string trim($string'-');
        }
       
        if (
    $t$replace[' '] = "_";

        
    $string iconv("UTF-8","UTF-8//IGNORE",strtr($string,$replace));
        if (
    $t$string preg_replace("/[^A-z_\-]/"''$string );
       
        return 
    $string;
    }
     
    #13 europa1988, 26 авг 2021
    Последнее редактирование: 26 авг 2021
Похожие темы
  1. qosmos
    Ответов:
    10
    Просмотров:
    750
  2. aeneas
    Ответов:
    20
    Просмотров:
    2.940
Загрузка...
Яндекс.Метрика