将url slug改为camel case

Viv*_*ndi 2 php regex

我在PHP中有以下字符串:

this-is_a-test
Run Code Online (Sandbox Code Playgroud)

我想改变这个:

thisIsATest
Run Code Online (Sandbox Code Playgroud)

所以字符串可以包含任何破折号或下划线的数字.我需要一些正则表达式函数,将字符串更改为驼峰大小写字符串.

如何才能做到这一点?

Spu*_*ley 6

不,你不需要正则表达式。

  • str_replace() 用空格替换标点符号。
  • ucwords() 将每个单词的第一个字母大写。
  • str_replace() 再次摆脱空间。

您可以使用正则表达式,但这不是必需的。


Joã*_*lva 5

用途preg_replace_callback:

$string = 'this-is_a-test';

function toUpper($matches) {
  return strtoupper($matches[1]);
}

echo preg_replace_callback('/[-_](.)/', 'toUpper', $string); // thisIsATest
Run Code Online (Sandbox Code Playgroud)

演示.