有人可以帮我完成这个PHP功能吗?我想采用这样的字符串:'this-is-a-string'并将其转换为:'thisIsAString':
function dashesToCamelCase($string, $capitalizeFirstCharacter = false) {
// Do stuff
return $string;
}
Run Code Online (Sandbox Code Playgroud)
web*_*ave 158
不需要正则表达式或回调.几乎所有的工作都可以用ucwords完成:
function dashesToCamelCase($string, $capitalizeFirstCharacter = false)
{
$str = str_replace(' ', '', ucwords(str_replace('-', ' ', $string)));
if (!$capitalizeFirstCharacter) {
$str[0] = strtolower($str[0]);
}
return $str;
}
echo dashesToCamelCase('this-is-a-string');
Run Code Online (Sandbox Code Playgroud)
如果您使用PHP> = 5.3,则可以使用lcfirst而不是strtolower.
这个第二个参数被添加到PHP 5.4.32/5.5.16中的ucwords中,这意味着我们不需要先将破折号更改为空格(感谢Lars Ebert和PeterM指出这一点).这是更新的代码:
function dashesToCamelCase($string, $capitalizeFirstCharacter = false)
{
$str = str_replace('-', '', ucwords($string, '-'));
if (!$capitalizeFirstCharacter) {
$str = lcfirst($str);
}
return $str;
}
echo dashesToCamelCase('this-is-a-string');
Run Code Online (Sandbox Code Playgroud)
Pet*_*erM 47
这可以通过使用接受分隔符作为参数的ucwords非常简单地完成:
function camelize($input, $separator = '_')
{
return str_replace($separator, '', ucwords($input, $separator));
}
Run Code Online (Sandbox Code Playgroud)
注意:需要php至少5.4.32,5.5.16
Ron*_*újo 14
在 Laravel 中使用Str::camel()
use Illuminate\Support\Str;
$converted = Str::camel('foo_bar');
// fooBar
Run Code Online (Sandbox Code Playgroud)
这是我如何处理它的变化.这里我有两个函数,第一个camelCase将任何东西变成camelCase,如果变量已经包含了cameCase,它就不会乱.第二个uncamelCase将camelCase转换为下划线(处理数据库密钥时的强大功能).
function camelCase($str) {
$i = array("-","_");
$str = preg_replace('/([a-z])([A-Z])/', "\\1 \\2", $str);
$str = preg_replace('@[^a-zA-Z0-9\-_ ]+@', '', $str);
$str = str_replace($i, ' ', $str);
$str = str_replace(' ', '', ucwords(strtolower($str)));
$str = strtolower(substr($str,0,1)).substr($str,1);
return $str;
}
function uncamelCase($str) {
$str = preg_replace('/([a-z])([A-Z])/', "\\1_\\2", $str);
$str = strtolower($str);
return $str;
}
Run Code Online (Sandbox Code Playgroud)
让我们测试两个:
$camel = camelCase("James_LIKES-camelCase");
$uncamel = uncamelCase($camel);
echo $camel." ".$uncamel;
Run Code Online (Sandbox Code Playgroud)
单线超载,带有文档块...
/**
* Convert underscore_strings to camelCase (medial capitals).
*
* @param {string} $str
*
* @return {string}
*/
function snakeToCamel ($str) {
// Remove underscores, capitalize words, squash, lowercase first.
return lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $str))));
}
Run Code Online (Sandbox Code Playgroud)
我可能会使用preg_replace_callback()
,像这样:
function dashesToCamelCase($string, $capitalizeFirstCharacter = false) {
return preg_replace_callback("/-[a-zA-Z]/", 'removeDashAndCapitalize', $string);
}
function removeDashAndCapitalize($matches) {
return strtoupper($matches[0][1]);
}
Run Code Online (Sandbox Code Playgroud)
您正在寻找preg_replace_callback,您可以像这样使用它:
$camelCase = preg_replace_callback('/-(.?)/', function($matches) {
return ucfirst($matches[1]);
}, $dashes);
Run Code Online (Sandbox Code Playgroud)