PHP 实现蛇形命名和驼峰命名的相互转换

例如:

  • get_book_by-id转换成小驼峰命名就是:getBookById

  • get_book_by-id转换成大驼峰命名就是:GetBookById

  • getBookById转换成蛇形命名就是:get_book_by_id

  • GetBookById转换成蛇形命名也是:get_book_by_id

答案

用PHP内置函数两行就能实现:

  1. // 蛇形命名转换为小驼峰命名
  2. function SnakeToLowerCamel($value)
  3. {
  4. $value = ucwords(str_replace(['_', '-'], ' ', $value));
  5. $value = str_replace(' ', '', $value);
  6. return lcfirst($value);
  7. }
  8. // 蛇形命名转换为小驼峰命名
  9. function SnakeToUpperCamel($value)
  10. {
  11. $value = ucwords(str_replace(['_', '-'], ' ', $value));
  12. $value = str_replace(' ', '', $value);
  13. return $value;
  14. }
  15. // 驼峰命名转换为蛇形命名
  16. function CamelToSnake($value)
  17. {
  18. // 以 UTF-8 模式删除空字符
  19. $value = preg_replace('/\s+/u', '', $value);
  20. // “?=”为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串
  21. // 这里的正则表达式匹配所有大写字符的前一个字符
  22. $value = strtolower(preg_replace('/(.)(?=[A-Z])/u', "$1_", $value));
  23. return $value;
  24. }