PHP:如何转换包含大写字符的字符串

标签 php string

我正在研究类名,我需要检查是否有任何大驼峰命名并以这种方式打破它:

 "UserManagement" becomes "user-management"  

 "SiteContentManagement" becomes "site-content-management"

经过大量搜索后,我只发现了 ucfirst、strtolower、strtoupper、ucword 的各种用法,但我看不出如何使用它们来满足我的需要,有什么想法吗?

感谢阅读;)

最佳答案

您可以使用 preg_replace用您的 lower-dash-lower 变体替换小写字母后跟大写字母的任何实例:

$dashedName = preg_replace('/([^A-Z-])([A-Z])/', '$1-$2', $className);

然后是 strtolower()处理所有剩余的大写字母:

return strtolower($dashedName);

完整功能在这里:

function camel2dashed($className) {
  return strtolower(preg_replace('/([^A-Z-])([A-Z])/', '$1-$2', $className));
}

解释使用的正则表达式:

/        Opening delimiter
(        Start Capture Group 1
  [^A-Z-]   Character Class: Any character NOT an uppercase letter and not a dash
)        End Capture Group 1
(        Start Capture Group 2
  [A-Z]    Character Class: Any uppercase letter
)        End Capture Group 2
/        Closing delimiter

至于替换字符串

$1  Insert Capture Group 1
-   Literal: dash
$2  Insert Capture Group 2

关于PHP:如何转换包含大写字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6564903/

相关文章:

php - Base64 和 ROT13 在单个 shell 命令中解码

php - 如何分多个 block 发送电子邮件?

javascript - 从第二个开始连接数组元素

string - 构建 URL 字符串

c++ - 字符串到枚举模板错误

php - 未配置数据库连接 [用户]

php - Codeception:保持登录状态

php - 日期显示不正确

python - 查找列表中最流行的词

arrays - VBA Excel 2010 : convert string array into int array