我有两种类型的字符串,hello
和helloThere
.
我想要的是改变它们,使它们看起来像:Hello
并Hello There
视情况而定。
这样做的好方法是什么?
我有两种类型的字符串,hello
和helloThere
.
我想要的是改变它们,使它们看起来像:Hello
并Hello There
视情况而定。
这样做的好方法是什么?
要将 CamelCase 转换为不同的单词:
preg_replace('/([^A-Z])([A-Z])/', "$1 $2", $string)
将所有单词的首字母大写:
ucwords()
所以一起:
ucwords(preg_replace('/([^A-Z])([A-Z])/', "$1 $2", $string))
使用ucwords
功能:
如果该字符是字母,则返回一个字符串,其中 str 中每个单词的第一个字符大写。
单词的定义是紧跟在空格之后的任何字符串(它们是:空格、换页符、换行符、回车、水平制表符和垂直制表符)。
这不会拆分拼在一起的单词 - 您必须根据需要在字符串中添加空格才能使此功能正常工作。
使用ucwords
功能:
echo ucwords('hello world');
为了使其适用于其他语言,UTF-8 可能是一个好主意。我在我的 wordpress 安装中为任何语言使用这个防水。
$str = mb_ucfirst($str, 'UTF-8', true);
这使第一个字母大写和所有其他小写。如果第三个 arg 设置为 false(默认值),则不会操纵字符串的其余部分。但是,这里的某个人可能会建议一个参数来重用函数本身,并在第一个单词之后将每个单词 mb 大写,以更准确地回答这个问题。
// Extends PHP
if (!function_exists('mb_ucfirst')) {
function mb_ucfirst($str, $encoding = "UTF-8", $lower_str_end = false) {
$first_letter = mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding);
$str_end = "";
if ($lower_str_end) {
$str_end = mb_strtolower(mb_substr($str, 1, mb_strlen($str, $encoding), $encoding), $encoding);
} else {
$str_end = mb_substr($str, 1, mb_strlen($str, $encoding), $encoding);
}
$str = $first_letter . $str_end;
return $str;
}
}
/ 伦德曼
PHP 有许多字符串操作函数。ucfirst()
会为你做的。
你可以ucwords
像每个人说的那样使用......添加helloThere
你可以做$with_space = preg_replace('/[A-Z]/'," $0",$string);
的空间ucwords($with_space);
使用 ucwords
<?php
$foo = 'hello world';
$foo = ucwords($foo); // Hello world
$bar = 'BONJOUR TOUT LE MONDE!';
$bar = ucwords($bar); // HELLO WORLD
$bar = ucwords(strtolower($bar)); // Hello World
?>
你不需要捕获任何字母来注入单词之间的空间——前瞻就可以了。然后在添加空格后应用多字节安全的标题大小写函数。
代码:(演示)
echo mb_convert_case(
preg_replace('~(?=\p{Lu})~u', ' ','helloThere'),
MB_CASE_TITLE
);
// Hello There