2011-12-22 112 views
0

所以我有一个正则表达式,它分开一个字符串,假设驼峰或PascalCase并将其转换为lowercase_with_underscores。该正则表达式看起来像这样(PHP):正则表达式打破由字符串分割字符串

strtolower(preg_replace('/(?!^)[[:upper:]]/','_\0', $string)); 

我想修改此,使其能够也打破了它假定大写的串在一排作为一个单元的字符串。例如,我将能够向上突破以下字符串:

'GUID' => 'guid' 
'SOME_VALUES' => 'some_value' 
'someThingELSE' => 'some_thing_else' 

关于如何修改正则表达式来做到这一点有什么建议?

回答

2

如何:

$result = strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $string)); 
+0

那如何利用像'THISisODD' – luastoned 2011-12-22 12:42:57

+0

@luastoned护理:像'GUID'这将是全部小写(即'thisisodd') - >'guid' – Toto 2011-12-22 12:45:35

+0

不真的:'thisis_odd' - 它会得到'someThingELSE'。 – luastoned 2011-12-22 12:48:42