Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将字符串中的第一个字母大写,其余字母小写_Php_Uppercase_Lowercase - Fatal编程技术网

Php 将字符串中的第一个字母大写,其余字母小写

Php 将字符串中的第一个字母大写,其余字母小写,php,uppercase,lowercase,Php,Uppercase,Lowercase,全部,, 我正在尝试将姓氏插入数据库。我想把名字的第一个字母大写,如果他们有两个姓,那么把第一个和第二个名字大写。例如,如果有人进入: 结婚名字maidenname 如果有两个以上的名字,它会将其转换为Marriedname Maidenname等等。另一种情况是,某人的名字中有一个撇号,因此,如果有人进入,是否仍有必要这样做: 奥康奈尔 这需要转换成奥康奈尔。我使用的是: ucfirst(strtolower($last_name)); 但是,正如您所知,这并不适用于所有场景。谢谢你的建议

全部,, 我正在尝试将姓氏插入数据库。我想把名字的第一个字母大写,如果他们有两个姓,那么把第一个和第二个名字大写。例如,如果有人进入:

结婚名字maidenname

如果有两个以上的名字,它会将其转换为Marriedname Maidenname等等。另一种情况是,某人的名字中有一个撇号,因此,如果有人进入,是否仍有必要这样做:

奥康奈尔

这需要转换成奥康奈尔。我使用的是:

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); &ensp; //this will lower all letter from the text <br>
$upper = ucwords($lower); &ensp; //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); &ensp; //this will lower all letter from the text <br>
$upper = ucwords($lower); &ensp; //this will uppercase all first letter from the text <br>

echo $upper;