<?php
function camelToUS1($string, $us = "-")
{
// insert hyphen between any letter and the beginning of a numeric chain
$string = preg_replace('/([a-z]+)([0-9]+)/i', '$1'.$us.'$2', $string); // insert hyphen between any lower-to-upper-case letter chain
$string = preg_replace('/([a-z]+)([A-Z]+)/', '$1'.$us.'$2', $string); // insert hyphen between the end of a numeric chain and the beginning of an alpha chain
$string = preg_replace('/([0-9]+)([a-z]+)/i', '$1'.$us.'$2', $string);
// Lowercase
return $string;
}
function camelToUS2($string, $us = "-") {
'/(?<=\d)(?=[A-Za-z])|(?<=[A-Za-z])(?=\d)|(?<=[a-z])(?=[A-Z])/', $us, $string));
}
function camelToUS3($string, $us = "-") {
}
$test_values = [
'foo' => 'foo',
'fooBar' => 'foo-bar',
'foo123' => 'foo-123',
'123Foo' => '123-foo',
'fooBar123' => 'foo-bar-123',
'foo123Bar' => 'foo-123-bar',
'foo123bar' => 'foo-123-bar',
'123FooBar' => '123-foo-bar',
];
echo "OP:\n";
foreach ( $test_values as $key => $val ) {
echo "$key: " . camelToUS1($key) . " => " . (camelToUS1($key) == $val) . "\n";
}
echo "\nanubhava:\n";
foreach ( $test_values as $key => $val ) {
echo "$key: " . camelToUS2($key) . " => " . (camelToUS2($key) == $val) . "\n";
}
echo "\nAdrien Leber:\n";
foreach ( $test_values as $key => $val ) {
echo "$key: " . camelToUS3($key) . " => " . (camelToUS3($key) == $val) . "\n";
}
?>
PD9waHAKCmZ1bmN0aW9uIGNhbWVsVG9VUzEoJHN0cmluZywgJHVzID0gIi0iKQp7CiAgICAvLyBpbnNlcnQgaHlwaGVuIGJldHdlZW4gYW55IGxldHRlciBhbmQgdGhlIGJlZ2lubmluZyBvZiBhIG51bWVyaWMgY2hhaW4KICAgICRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJy8oW2Etel0rKShbMC05XSspL2knLCAnJDEnLiR1cy4nJDInLCAkc3RyaW5nKTsKICAgIC8vIGluc2VydCBoeXBoZW4gYmV0d2VlbiBhbnkgbG93ZXItdG8tdXBwZXItY2FzZSBsZXR0ZXIgY2hhaW4KICAgICRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJy8oW2Etel0rKShbQS1aXSspLycsICckMScuJHVzLickMicsICRzdHJpbmcpOwogICAgLy8gaW5zZXJ0IGh5cGhlbiBiZXR3ZWVuIHRoZSBlbmQgb2YgYSBudW1lcmljIGNoYWluIGFuZCB0aGUgYmVnaW5uaW5nIG9mIGFuIGFscGhhIGNoYWluCiAgICAkc3RyaW5nID0gcHJlZ19yZXBsYWNlKCcvKFswLTldKykoW2Etel0rKS9pJywgJyQxJy4kdXMuJyQyJywgJHN0cmluZyk7CgogICAgLy8gTG93ZXJjYXNlCiAgICAkc3RyaW5nID0gc3RydG9sb3dlcigkc3RyaW5nKTsKCiAgICByZXR1cm4gJHN0cmluZzsKfQpmdW5jdGlvbiBjYW1lbFRvVVMyKCRzdHJpbmcsICR1cyA9ICItIikgewogICAgcmV0dXJuIHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKAogICAgCScvKD88PVxkKSg/PVtBLVphLXpdKXwoPzw9W0EtWmEtel0pKD89XGQpfCg/PD1bYS16XSkoPz1bQS1aXSkvJywgJHVzLCAkc3RyaW5nKSk7Cn0KZnVuY3Rpb24gY2FtZWxUb1VTMygkc3RyaW5nLCAkdXMgPSAiLSIpIHsKICAgIHJldHVybiBzdHJ0b2xvd2VyKHByZWdfcmVwbGFjZSgnLyg/PCFeKVtBLVpdK3woPzwhXnxcZClbXGRdKy8nLCAkdXMuJyQwJywgJHN0cmluZykpOwp9CgokdGVzdF92YWx1ZXMgPSBbCiAgICAnZm9vJyAgICAgICA9PiAnZm9vJywKICAgICdmb29CYXInICAgID0+ICdmb28tYmFyJywKICAgICdmb28xMjMnICAgID0+ICdmb28tMTIzJywKICAgICcxMjNGb28nICAgID0+ICcxMjMtZm9vJywKICAgICdmb29CYXIxMjMnID0+ICdmb28tYmFyLTEyMycsCiAgICAnZm9vMTIzQmFyJyA9PiAnZm9vLTEyMy1iYXInLAogICAgJ2ZvbzEyM2JhcicgPT4gJ2Zvby0xMjMtYmFyJywKICAgICcxMjNGb29CYXInID0+ICcxMjMtZm9vLWJhcicsCl07CgplY2hvICJPUDpcbiI7CmZvcmVhY2ggKCAkdGVzdF92YWx1ZXMgYXMgJGtleSA9PiAkdmFsICkgewogICBlY2hvICIka2V5OiAiIC4gY2FtZWxUb1VTMSgka2V5KSAuICAiID0+ICIgLiAoY2FtZWxUb1VTMSgka2V5KSA9PSAkdmFsKSAuICJcbiI7Cn0KZWNobyAiXG5hbnViaGF2YTpcbiI7CmZvcmVhY2ggKCAkdGVzdF92YWx1ZXMgYXMgJGtleSA9PiAkdmFsICkgewogICBlY2hvICIka2V5OiAiIC4gY2FtZWxUb1VTMigka2V5KSAuICAiID0+ICIgLiAoY2FtZWxUb1VTMigka2V5KSA9PSAkdmFsKSAuICJcbiI7Cn0KZWNobyAiXG5BZHJpZW4gTGViZXI6XG4iOwpmb3JlYWNoICggJHRlc3RfdmFsdWVzIGFzICRrZXkgPT4gJHZhbCApIHsKICAgZWNobyAiJGtleTogIiAuIGNhbWVsVG9VUzMoJGtleSkgLiAgIiA9PiAiIC4gKGNhbWVsVG9VUzMoJGtleSkgPT0gJHZhbCkgLiAiXG4iOwp9Cgo/Pg==