我想用我的本地语言将用户输入字符串转换为url friendly slug。
我使用了laravel 5.2并尝试使用str_slug($request->input('title'))
。
它可以将英文字符串转换为slug,但对于本地语言,它返回空字符串。我的输入将是孟加拉语。
使用$request->input('title')
。我得到了bangla文本,但无法将其转换为url friendly slug。
我该如何解决这个问题?
感谢。
答案 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());
})
这将产生“আমার সোনার বাাাাাাাাাা”的“আমার-সোনার-বাংলা”的类型结果