解决方法
试试这个尺码:
$tests = array( 'simpleTest' => 'simple_test','easy' => 'easy','HTML' => 'html','simpleXML' => 'simple_xml','PDFLoad' => 'pdf_load','startMIDDLELast' => 'start_middle_last','AString' => 'a_string','Some4Numbers234' => 'some4_numbers234','TEST123String' => 'test123_string',); foreach ($tests as $test => $result) { $output = from_camel_case($test); if ($output === $result) { echo "Pass: $test => $result\n"; } else { echo "Fail: $test => $result [$output]\n"; } } function from_camel_case($input) { preg_match_all('!([A-Z][A-Z0-9]*(?=$|[A-Z][a-z0-9])|[A-Za-z][a-z0-9]+)!',$input,$matches); $ret = $matches[0]; foreach ($ret as &$match) { $match = $match == strtoupper($match) ? strtolower($match) : lcfirst($match); } return implode('_',$ret); }
输出:
Pass: simpleTest => simple_test Pass: easy => easy Pass: HTML => html Pass: simpleXML => simple_xml Pass: PDFLoad => pdf_load Pass: startMIDDLELast => start_middle_last Pass: AString => a_string Pass: Some4Numbers234 => some4_numbers234 Pass: TEST123String => test123_string
这实现了以下规则:
>以小写字母开头的序列必须后跟小写字母和数字;
>以大写字母开头的序列可以跟随:
>一个或多个大写字母和数字(后跟字符串的结尾或大写字母后跟小写字母或数字,即下一个序列的开头);要么>一个或多个小写字母或数字.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。