У меня возникла эта проблема, когда я работал с арабским языком, поэтому я сделал следующую функцию, которая решила проблему для меня.
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;
}
Эта функция решает проблему только для арабского языка, если вы хотите, чтобы решить эту проблему для кириллицы или любого другого языка, вам нужно добавить кириллические символы (или символы другого языка) рядом или вместо этих ءاأإآؤئبتثجحخدذرزسشصضطظعغفقكلمنهويةى
существующих арабских символов.
Пожалуйста, объясните, как его установить? Мне совсем не понравилось. – Paul
Просто добавьте в свой файл composer.json, обновите композитор и следуйте инструкциям репозитория для использования. –
Я думаю, что неплохо также предоставить инструкции по установке для тех, кто не использует Composer. Я не мог понять это, поэтому я бросил его и использовал другой фрагмент кода, который был проще в использовании. – Paul