utf8 -适用于所有语言的PHP分段函数


utf 8 - PHP slug function for all languages

我想知道是否有一个简单的函数/代码,可以照顾从给定字符串创建一个段塞。

我正在做一个多语言网站(英语,西班牙语和阿拉伯语),我不确定如何处理西班牙语和阿拉伯语的问题。

我目前使用下面的代码从CSS-Tricks,但它不工作的UTF-8文本。

<?php
function create_slug($string){
   $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
   return $slug;
}
echo create_slug('does this thing work or not');
//returns 'does-this-thing-work-or-not'
?>

如果您想使用相同的文本而不进行翻译

function slug($str, $limit = null) {
    if ($limit) {
        $str = mb_substr($str, 0, $limit, "utf-8");
    }
    $text = html_entity_decode($str, ENT_QUOTES, 'UTF-8');
    // replace non letter or digits by -
    $text = preg_replace('~[^''pL'd]+~u', '-', $text);
    // trim
    $text = trim($text, '-');
    return $text;
}

我为此创建了ausi/slug-generator库。

它使用PHP Intl扩展,在不同的脚本之间进行翻译,它本身是基于来自Unicode CLDR的数据。通过这种方式,它可以与一系列广泛的语言一起工作。

你可以这样使用:

<?php
$generator = new SlugGenerator;
$generator->generate('English language!');
// Result: english-language
$generator->generate('Idioma español!');
// Result: idioma-espanol
$generator->generate('لغة عربية');
// Result: lght-rbyt