我正在使用此函数将 CamelCase 转换为虚线字符串:
function camel2dashed($className) {
return strtolower(preg_replace('/([^A-Z-])([A-Z])/', '$1-$2', $className));
}
它有点工作,但是当我有前任时有问题。这个字符串:getADog
。它回来了get-adog
,但我想要get-a-dog
我应该如何更改我的代码?谢谢
我正在使用此函数将 CamelCase 转换为虚线字符串:
function camel2dashed($className) {
return strtolower(preg_replace('/([^A-Z-])([A-Z])/', '$1-$2', $className));
}
它有点工作,但是当我有前任时有问题。这个字符串:getADog
。它回来了get-adog
,但我想要get-a-dog
我应该如何更改我的代码?谢谢
如果您知道您的字符串不是以大写字母开头,则不需要先行断言来执行此操作,您可以在每个大写字母之前插入一个连字符,如下所示:
function camel2dashed($className) {
return strtolower(preg_replace('/([A-Z])/', '-$1', $className));
}
这仍然无法处理@sfjedi 的“companyHQ”->“company-hq”之类的情况。为此,您必须明确测试不应该拆分的允许的大写子字符串,或指定一些通用规则(例如,不要在最后一个字符之前添加连字符)。
您可以在这个虚拟重复问题的答案中找到一些更复杂的替代方案。