Как проверить только алфавитно-цифровой и другой алфавит языка с помощью preg_replace? - PullRequest
0 голосов
/ 28 января 2019

Мне нужно создать SEO-дружественную строку только из буквенно-цифровых символов и символов моего родного языка.Это сингхала.

Моя ожидаемая строка должна выглядеть примерно так:

$myString = "this-is-a-දහසක්-බාධක-දුක්-කම්කටොලු-මැදින්-ලෝකය-දිනන්නට-වෙර-දරන";

Я использую функцию для создания такой строки.И эта функция выглядит следующим образом:

function seoUrl($string) {
    //Lower case everything
    $string = strtolower($string);
    //Make alphanumeric (removes all other characters)
    $string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
    //Clean up multiple dashes or whitespaces
    $string = preg_replace("/[\s-]+/", " ", $string);
    //Convert whitespaces and underscore to dash
    $string = preg_replace("/[\s_]/", "-", $string);
    return $string;
}

Эта функция работает только для английских символов и вывода вышеуказанной строки, как показано ниже:

$title = seoUrl("this-is-a-දහසක්-බාධක-දුක්-කම්කටොලු-මැදින්-ලෝකය-දිනන්නට-වෙර-දරන");
echo $title; // this-is-a-

Может кто-нибудь сказать мне, как изменить вышеуказанную функцию, чтобыполучить все мои персонажи (в том числе мои символы на родном языке)

Надеюсь, кто-нибудь может мне помочь.Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Используйте /u флаг для Unicode и \pL для букв, \pN для чисел.

Редактировать: из-за некоторых многобайтовых символов, mb_ereg_replace является хорошим выбором:

function seoUrl($string) {
    //Lower case everything
    $string = strtolower($string);
    //Make alphanumeric (removes all other characters)
    $string = mb_ereg_replace("[^\x0D-\x0E\w\s-]", "", $string);
    //Clean up multiple dashes or whitespaces
    $string = preg_replace("/[\s-]+/", " ", $string);
    //Convert whitespaces and underscore to dash
    $string = preg_replace("/[\s_]/", "-", $string);
    return $string;
}
$title = seoUrl("this-is-a-දහසක්-බාධක-දුක්-කම්කටොලු-මැදින්-ලෝකය-දිනන්නට-වෙර-දරන");
echo $title;

Выход:

this-is-a-දහසක්-බාධක-දුක්-කම්කටොලු-මැදින්-ලෝකය-දිනන්නට-වෙර-දරන
0 голосов
/ 28 января 2019

Вы используете многобайтовую кодировку.preg_replace не работает с многобайтовым кодированием.Вы должны использовать mb_ereg_replace функцию

...