Php 将字符串中的第一个字母大写,其余字母小写
全部,, 我正在尝试将姓氏插入数据库。我想把名字的第一个字母大写,如果他们有两个姓,那么把第一个和第二个名字大写。例如,如果有人进入: 结婚名字maidenname 如果有两个以上的名字,它会将其转换为Marriedname Maidenname等等。另一种情况是,某人的名字中有一个撇号,因此,如果有人进入,是否仍有必要这样做: 奥康奈尔 这需要转换成奥康奈尔。我使用的是:Php 将字符串中的第一个字母大写,其余字母小写,php,uppercase,lowercase,Php,Uppercase,Lowercase,全部,, 我正在尝试将姓氏插入数据库。我想把名字的第一个字母大写,如果他们有两个姓,那么把第一个和第二个名字大写。例如,如果有人进入: 结婚名字maidenname 如果有两个以上的名字,它会将其转换为Marriedname Maidenname等等。另一种情况是,某人的名字中有一个撇号,因此,如果有人进入,是否仍有必要这样做: 奥康奈尔 这需要转换成奥康奈尔。我使用的是: ucfirst(strtolower($last_name)); 但是,正如您所知,这并不适用于所有场景。谢谢你的建议
ucfirst(strtolower($last_name));
但是,正如您所知,这并不适用于所有场景。谢谢你的建议 这将大写所有单词的首字母,以及撇号后面的字母。它将使所有其他字母小写。它应该适合您:
str_replace('\' ', '\'', ucwords(str_replace('\'', '\' ', strtolower($last_name))));
您可以使用带有
e
标志的preg\u replace
(执行php函数):
也许正则表达式模式可以改进,但我所做的是:
是行的开头或任何非字母字符$1
是任何小写字母字符$2
processReplacement()
函数的结果替换这两个函数
如果您使用的是PHP5.3,那么让
processReplacement()
成为一个匿名函数可能是值得的。首先转换为标题大小写,然后找到第一个撇号和下一个字符的大写字母。您将需要添加许多检查,以确保撇号后面有一个char,并且此代码只对一个撇号有效。e、 g.“玛丽·奥卡拉汉·奥康奈尔”
我不相信有一个好的答案能涵盖你的所有情况。PHP.net论坛有相当多的讨论,但似乎没有一个答案。我建议您使用大写或不使用用户输入进行标准化。使用此内置功能:
function processReplacement($one, $two)
{
return $one . strtoupper($two);
}
$name = "bob o'conner";
$name = preg_replace("/(^|[^a-zA-Z])([a-z])/e","processReplacement('$1', '$2')", $name);
var_dump($name); // output "Bob O'Conner"
ucwords('string');
这些都不是UTF8友好的,所以这里有一个可以完美地工作(到目前为止) 用法:
$s = 'SÃO JOÃO DOS SANTOS';
$v = titleCase($s); // 'São João dos Santos'
这是对主要问题更简单、更直接的回答。下面的函数模仿PHP方法。为了防止将来PHP用名称空间扩展它,首先检查一个测试。我在wordpress安装中对任何语言都使用防水功能
$str = mb_ucfirst($str, 'UTF-8', true);
这使得第一个字母大写,所有其他小写字母都和Q一样。如果第三个参数设置为false(默认值),则不会操作字符串的其余部分
// 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;
}
}
/伦德曼你可以在word上试试这个
<?php echo ucwords(strtolower('Dhaka, JAMALPUR, sarishabari')) ?>
结果是:
达卡、贾马尔普尔、萨里沙巴里
像这样使用ucfirst(strtolower($var))您可以在PHP中使用strtolower
和ucwords
函数
首先:使用strtolower('inputedtext')降低所有输入的文本,然后使用ucwords('strtolower')`将所有文本大写
样本:
$text = 'tHis iS sOme tEXt'; <br>
$lower = strtolower($text);   //this will lower all letter from the text <br>
$upper = ucwords($lower);   //this will uppercase all first letter from the text <br>
echo $upper;
$text='这是一些文本'
$lower=strtolower($text)&ensp//这将降低文本中的所有字母
$upper=ucwords($lower)&ensp//这将使文本中的所有第一个字母都大写
回音$upper;
结果=这是一些文本
您可以将一行代码用于ucwords(strtolower($text))代码>@deceze哈哈好点。我想我只希望他们能正确地键入:)即使他们这样做了,你也在将其小写。那么信任用户以他们希望你存储的方式输入他们的名称呢?可以使用一个简单的$name==strtolower($name)
检查来启用/禁用更改大小写的算法。我可能遗漏了什么,但这似乎只是使字符串的第一个字母大写?最初的问题是如何使字符串中包含的所有单词的第一个字母大写。这正是我所需要的。谢谢我认为这不支持UTF8,因此我建议尝试Antonio Max的答案。如果单词是StRinG
,这将变成StRinG
。不会全部小写。所以,ucwords(strtolower('stRing'))
?只需为这个答案添加文档链接。
<?php echo ucwords(strtolower('Dhaka, JAMALPUR, sarishabari')) ?>
$text = 'tHis iS sOme tEXt'; <br>
$lower = strtolower($text);   //this will lower all letter from the text <br>
$upper = ucwords($lower);   //this will uppercase all first letter from the text <br>
echo $upper;