用本地语言

时间:2017-04-16 12:07:54

标签: php laravel-5.2

我想用我的本地语言将用户输入字符串转换为url friendly slug。

我使用了laravel 5.2并尝试使用str_slug($request->input('title'))

它可以将英文字符串转换为slug,但对于本地语言,它返回空字符串。我的输入将是孟加拉语。

使用$request->input('title')。我得到了bangla文本,但无法将其转换为url friendly slug。

我该如何解决这个问题?

感谢。

4 个答案:

答案 0 :(得分:2)

您可以使用以下功能。 我不知道它是否适用于当地语言。但你可以尝试一下。

public function createSlug($str, $delimiter = '-'){

    $slug = strtolower(trim(preg_replace('/[\s-]+/', $delimiter, preg_replace('/[^A-Za-z0-9-]+/', $delimiter, preg_replace('/[&]/', 'and', preg_replace('/[\']/', '', iconv('UTF-8', 'ASCII//TRANSLIT', $str))))), $delimiter));
    return $slug;

} 

您可以在此处查看特定的当地语言 http://code.google.com/p/php-slugs/

答案 1 :(得分:0)

我使用jquery完成了这项工作并且工作正常

$('input[name=title]').on('blur', function () {
    var slugElm = $('input[name=slug]');

    if (slugElm.val()) { return; }

    // slugElm.val(this.value.toLowerCase().replace(/[^a-z0-9-]+/g, '-').replace(/^-+|-+$/g, ''));

    slugElm.val(this.value.toLowerCase().replace(this.value, this.value).replace(/^-+|-+$/g, '')
        .replace(/\s/g, '-'));

})

laravel有一个解决方案。

http://killerwhalesoft.com/blog/make-laravel-slug-support-utf8-characters/

答案 2 :(得分:0)

您可以使用javascript执行此操作。假设您的文字是“আমারসোনার”,函数将返回“আমার-আমার-বাংলা”。它还会删除多个破折号。

function slugify(text) {
    return text.toLowerCase().replace(text, text).replace(/^-+|-+$/g, '')
        .replace(/\s/g, '-').replace(/\-\-+/g, '-');

}

@Salman Mahmud的修改后答案

答案 3 :(得分:0)

你可以试试这个

 <input type="text" name="title" id="title">
 <input type="hidden" name="slug" id="slug">

$("#title").keyup(function(){
    var str = $(this).val();
    var txt = str.replace(/ /g,"-");
    $("#slug").val(txt.toLowerCase());
})

这将产生“আমার সোনার বাাাাাাাাাা”的“আমার-সোনার-বাংলা”的类型结果