我使用这个功能,驼峰转换为字符串虚线:
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-])([A-Z])/', '$1-$2', $className));
}
它有点工作,但是当我有恩那里有问题。 此字符串: getADog
。 它返回get-adog
但我希望get-a-dog
我应该怎么更改我的代码? 谢谢
使用前向断言 :
function camel2dashed($className) {
return strtolower(preg_replace('/([a-zA-Z])(?=[A-Z])/', '$1-', $className));
}
看到它的在线工作: ideone
你并不需要一个超前的断言来做到这一点,如果你知道你的字符串不以大写字母开头,你可以插入每一个大写字母像在此之前连字符:
function camel2dashed($className) {
return strtolower(preg_replace('/([A-Z])/', '-$1', $className));
}
这仍然不会处理像@ sfjedi的“companyHQ”案件 - >“公司总部”。 对于你必须明确地测试不应该被允许分割资本子,或指定一些通用规则(例如不预置最后一个字符之前连字符)。
你可以找到答案,这样一些更复杂的选择虚拟复制的问题 。