space和“-”之间的大写单词如何

How uppercase words with space and "-" between

我想用

更改字符串
hello teSt woRld hEllo-woRld

Hello Test World Hello-World

我做了一些事情,只观察单词之间的空格。 但我需要它用于空格和“-”之间。谁能告诉我如何实现它?

$words = explode(" ", $string);
foreach ( $words as $key=>$value ) {
  $new .= mb_strtoupper( mb_substr( mb_strtolower( $value) , 0, 1, 'UTF-8'), 'UTF-8' ) . 
          mb_substr(mb_strtolower( $value ), 1, null, 'UTF-8') . ' ';
}

你应该尝试这样的事情:

$string = "hello teSt woRld hEllo-woRld";
echo ucwords(strtolower($string), " -");

ucwords函数的第二个参数是单词分隔符。在这种情况下,单词用 space 或连字符分隔。

结果将是:

Hello Test World Hello-World

如果您担心保留 UTF-8 格式,您应该考虑使用 mb_convert_case 函数,如下例所示:

$str = "mary had a Little lamb and she loved it so";
$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
echo $str; // Display: Mary Had A Little Lamb And She Loved It So

您也可以使用正则表达式

$str = 'hello teSt woRld hEllo-woRld';
$str = strtolower($str);

$line = preg_replace_callback(
    '(^\w|\s\w|\-\w)',
    function ($matches) {
        return strtoupper($matches[0]);
    },
    $str
);
echo $line;