【问题标题】:Laravel str_slug not working for unicode banglaLaravel str_slug 不适用于 unicode 孟加拉语
【发布时间】:2016-12-12 12:56:11
【问题描述】:

我在一个 laravel 项目中工作。我已经打了网址。它适用于英语。但是当我使用孟加拉语时,它返回空。请帮我解决问题。

echo str_slug("hi there");

// Result: hi-there

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

// Result: '' (Empty)

【问题讨论】:

标签: php laravel


【解决方案1】:

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

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;

【讨论】:

    【解决方案2】:

    试试这个;它会正常工作。

    $('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, '-')
        )
    })
    

    【讨论】:

      【解决方案3】:

      str_slug 或外观版本Str::slug 不适用于非 ascii 字符串。您可以改用这种方法

      function make_slug($string) {
          return preg_replace('/\s+/u', '-', trim($string));
      }
      
      $slug = make_slug(" বাংলাদেশ   ব্যাংকের    রিজার্ভের  অর্থ  চুরির   ঘটনায়   ফিলিপাইনের  ");
      echo $slug;
      
      
      // Output: বাংলাদেশ-ব্যাংকের-রিজার্ভের-অর্থ-চুরির-ঘটনায়-ফিলিপাইনের
      

      【讨论】:

        猜你喜欢
        • 2017-03-16
        • 2018-03-28
        • 2015-04-17
        • 2017-09-06
        • 2021-12-25
        • 2011-09-24
        • 1970-01-01
        • 1970-01-01
        • 2019-09-23
        相关资源
        最近更新 更多