2013-04-24 4 views
2

В настоящее время в L4 вы не можете получить слизню из кириллицы. В L3 для этого был массив ascii. Где и как я могу добавить этот массив/способность создавать пулю из кириллической строки?Laravel 4 cyrillic slug

EDIT

Библиотека https://github.com/cocur/slugify это хороший вариант, но я решил использовать в L4 пользовательскую библиотеку Slug из методов L3 и массива ASCii. Теперь у меня в L4 работает Slug maker, как в L3.

ответ

2

Вы можете установить эту библиотеку (https://github.com/cocur/slugify) через композитор и использовать его.

Это очень прост в установке и использовании.

+0

Пожалуйста, объясните, как его установить? Мне совсем не понравилось. – Paul

+0

Просто добавьте в свой файл composer.json, обновите композитор и следуйте инструкциям репозитория для использования. –

+0

Я думаю, что неплохо также предоставить инструкции по установке для тех, кто не использует Composer. Я не мог понять это, поэтому я бросил его и использовал другой фрагмент кода, который был проще в использовании. – Paul

0

У меня возникла эта проблема, когда я работал с арабским языком, поэтому я сделал следующую функцию, которая решила проблему для меня.

function make_slug($string = null, $separator = "-") { 
    if (is_null($string)) { 
     return ""; 
    } 

    // Remove spaces from the beginning and from the end of the string 
    $string = trim($string); 

    // Lower case everything 
    // using mb_strtolower() function is important for non-Latin UTF-8 string | more info: http://goo.gl/QL2tzK 
    $string = mb_strtolower($string, "UTF-8");; 

    // Make alphanumeric (removes all other characters) 
    // this makes the string safe especially when used as a part of a URL 
    // this keeps latin characters and arabic charactrs as well 
    $string = preg_replace("/[^a-z0-9_\s-ءاأإآؤئبتثجحخدذرزسشصضطظعغفقكلمنهويةى]/u", "", $string); 

    // Remove multiple dashes or whitespaces 
    $string = preg_replace("/[\s-]+/", " ", $string); 

    // Convert whitespaces and underscore to the given separator 
    $string = preg_replace("/[\s_]/", $separator, $string); 

    return $string; 
} 

Эта функция решает проблему только для арабского языка, если вы хотите, чтобы решить эту проблему для кириллицы или любого другого языка, вам нужно добавить кириллические символы (или символы другого языка) рядом или вместо этих ءاأإآؤئبتثجحخدذرزسشصضطظعغفقكلمنهويةى существующих арабских символов.