我只需要用我的母语字母数字和字符创建一个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-
有人可以告诉我如何修改上述功能以获取所有字符(包括我的母语字符)
希望有人可以帮助我。谢谢。
答案 0 :(得分:3)
对统一码使用/u
标志,对字母使用\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-දහසක්-බාධක-දුක්-කම්කටොලු-මැදින්-ලෝකය-දිනන්නට-වෙර-දරන
答案 1 :(得分:2)
您使用多字节编码。 preg_replace不适用于多字节编码。您应该使用mb_ereg_replace
函数