douhuang3833 2018-01-26 14:28
浏览 39
已采纳

PHP使用str_slug而不更改Upper Cases

Want to change text into slug using str_slug. It works perfectly for different cases, but I want it to work without changing UpperCases, i.e.

ex: Hello --- World => Hello-World

Is there a way to get what I want?

  • 写回答

2条回答 默认 最新

  • dousui6193 2018-01-26 14:38
    关注

    As stated on a question on laracasts.com you can create your own version of the helper function, that leaves out mb_strtolower():

    public static function slug($title, $separator = '-', $language = 'en')
    {
        $title = static::ascii($title, $language);
        // Convert all dashes/underscores into separator
        $flip = $separator == '-' ? '_' : '-';
        $title = preg_replace('!['.preg_quote($flip).']+!u', $separator, $title);
        // Replace @ with the word 'at'
        $title = str_replace('@', $separator.'at'.$separator, $title);
        // Remove all characters that are not the separator, letters, numbers, or whitespace.
    
        // With lower case: $title = preg_replace('![^'.preg_quote($separator).'\pL\pN\s]+!u', '', mb_strtolower($title));
        $title = preg_replace('![^'.preg_quote($separator).'\pL\pN\s]+!u', '', $title);
    
        // Replace all separator characters and whitespace by a single separator
        $title = preg_replace('!['.preg_quote($separator).'\s]+!u', $separator, $title);
        return trim($title, $separator);
    }
    

    Working example

    Original implementation

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 unity3d机械臂
  • ¥20 判断两个表是否完全相同
  • ¥20 工控机出现散热器转一下停一下这种情况,是什么原因造成的
  • ¥15 双显卡,启动docker容器报错。
  • ¥15 想编写一个期货跨期套利的程序
  • ¥15 一个线程在sleep的时候set一个信号会起作用吗
  • ¥50 如何利用matlab将现有的地基雷达回波数据调制为机载雷达回波数据
  • ¥100 需求高精度PT100设计电路和算法
  • ¥15 单片机配网,继电器开关,广播
  • ¥60 Qcustomplot绘制实时动态曲线