Laravel str_slug不适用于unicode bangla

时间:2016-08-06 04:36:32

标签: php laravel

我在laravel项目中工作。我有一个slu ur的网址。它适用于英语。但是当我使用Bangla时它返回空。请帮我解决这个问题。

echo str_slug("hi there");

// Result: hi-there

echo  str_slug("বাংলাদেশ ব্যাংকের রিজার্ভের অর্থ চুরির ঘটনায় ফিলিপাইনের");

// Result: '' (Empty)

3 个答案:

答案 0 :(得分:14)

str_slug或外观版Str::slug不适用于非ascii字符串。您可以使用此方法

function make_slug($string) {
    return preg_replace('/\s+/u', '-', trim($string));
}

$slug = make_slug(" বাংলাদেশ   ব্যাংকের    রিজার্ভের  অর্থ  চুরির   ঘটনায়   ফিলিপাইনের  ");
echo $slug;


// Output: বাংলাদেশ-ব্যাংকের-রিজার্ভের-অর্থ-চুরির-ঘটনায়-ফিলিপাইনের

答案 1 :(得分:0)

尝试一下;它会正常工作。

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

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

答案 2 :(得分:-1)

当然,此代码将适用于任何本地语言。您可以使用unicode或任何其他操作。此preg_match将删除一些特殊字符并从您的帖子标题中转换seo友好的子弹。

enter code here

     function CleanURL($string, $delimiter = '-') {
      
$string = preg_replace("/[~`{}.'\"\!\@\#\$\%\^\&\*\(\)\_\=\+\/\?\>\<\,\[\]\:\;\|\\\]/", "", $string);
    
       
        $string = preg_replace("/[\/_|+ -]+/", $delimiter, $string);
    
        return $string;

    }

    $slug=CleanURL($request->title);
    $post->slug=$slug;