如何将首字母显示为大写?

时间:2008-10-08 13:08:27

标签: php mysql

我的数据库中有fname和lname,名称可以存储为JOHN DOE或john DOE或JoHN dOE,但最终我想将其显示为John Doe

fname是John,lname是Doe

7 个答案:

答案 0 :(得分:21)

请注意,还有其他大写形式,例如John McDoe,John D'Oe,John de O和John van den Doe。

答案 1 :(得分:14)

看到它被标记为PHP:

  

string ucfirst ( string $str );

到第一个单词的大写第一个字母

  

string ucwords ( string $str );

将每个单词的第一个字母大写

您可能希望将这些与

结合使用
  

string strtolower ( string $str );

首先将所有名称规范化为小写。

答案 2 :(得分:13)

我不确定您希望在何处以及如何显示它,但如果它在网页上,您可能会尝试使用CSS更改显示。尝试添加:

text-transform:capitalize;

相关规则,如下:

.name { text-transform:capitalize;}

如果您将名称放在带有class =“name”的div或span中。当然,这不会以任何方式改变数据库条目,但我不清楚哪个更适合。

答案 3 :(得分:3)

来自php.net的示例:

$bar = 'HELLO WORLD!';
$bar = ucfirst($bar);             // HELLO WORLD!
$bar = ucfirst(strtolower($bar)); // Hello world!

请记住有关语言环境的说明......

答案 4 :(得分:1)

对于简单的名称,这将有效。请注意特殊情况(如下例中的“Ronald McDonald”)。

在SQL Server中:

SELECT  --step 2: combine broken parts into a final name
  NAME_PARTS.FNAME_INITIAL + NAME_PARTS.REST_OF_FNAME AS FNAME
 ,NAME_PARTS.LNAME_INITIAL + NAME_PARTS.REST_OF_LNAME AS LNAME
FROM
  (     --step 1: break name into 1st letter and "everything else"
  SELECT
    UPPER(SUBSTRING(TEST.FNAME,1,1)) AS FNAME_INITIAL
   ,UPPER(SUBSTRING(TEST.LNAME,1,1)) AS LNAME_INITIAL
   ,LOWER(SUBSTRING(TEST.FNAME,2,LEN(TEST.FNAME))) AS REST_OF_FNAME
   ,LOWER(SUBSTRING(TEST.LNAME,2,LEN(TEST.LNAME))) AS REST_OF_LNAME
  FROM
    (   --step 0: generate some test data
          SELECT 'john' AS FNAME, 'doe' as LNAME
    UNION SELECT 'SUZY', 'SMITH'
    UNION SELECT 'bIlLy', 'BOb'
    UNION SELECT 'RoNALD', 'McDonald'
    UNION SELECT 'Edward', NULL
    UNION SELECT NULL, 'Jones'
    ) TEST
  ) NAME_PARTS

在Oracle

SELECT  --step 2: combine broken parts into a final name
  NAME_PARTS.FNAME_INITIAL || NAME_PARTS.REST_OF_FNAME AS FNAME
 ,NAME_PARTS.LNAME_INITIAL || NAME_PARTS.REST_OF_LNAME AS LNAME
FROM
  (     --step 1: break name into 1st letter and "everything else"
  SELECT
    UPPER(SUBSTR(TEST.FNAME,1,1)) AS FNAME_INITIAL
   ,UPPER(SUBSTR(TEST.LNAME,1,1)) AS LNAME_INITIAL
   ,LOWER(SUBSTR(TEST.FNAME,2,LENGTH(TEST.FNAME))) AS REST_OF_FNAME
   ,LOWER(SUBSTR(TEST.LNAME,2,LENGTH(TEST.LNAME))) AS REST_OF_LNAME
  FROM
    (   --step 0: generate some test data
          SELECT 'john' AS FNAME, 'doe' as LNAME FROM DUAL
    UNION SELECT 'SUZY', 'SMITH' FROM DUAL
    UNION SELECT 'bIlLy', 'BOb' FROM DUAL
    UNION SELECT 'RoNALD', 'McDonald' FROM DUAL
    UNION SELECT 'Edward', NULL FROM DUAL
    UNION SELECT NULL, 'Jones' FROM DUAL
    ) TEST
  ) NAME_PARTS

答案 5 :(得分:1)

结合PHP速记函数strtolowerucwords解决了您的问题:

function ucname($f, $l)
{
    return ucwords(strtolower($f." ".$l));
}
echo ucname($fname, $lname);

另一方面,请记住,您可以在许多不同阶段进行这种数据美化:

  1. 在插入之前,在您的应用程序中
  2. 在插入期间,在SQL插入/更新查询中使用字符串函数
  3. 在提取期间,使用SQL select查询中的字符串函数
  4. 提取后
  5. ,在您的申请中

答案 6 :(得分:-1)

将名称更改为更低,然后将('A' - 'a')添加到fname&的第一个字母。 L-NAME。