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 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记