【问题标题】:Capitalize first letter of each word pulled from mysql with PHP/jQuery使用 PHP/jQuery 从 mysql 中提取的每个单词的首字母大写
【发布时间】:2011-06-05 06:52:53
【问题描述】:

我已将名称全部小写存储到 mysql 数据库中,但我的用户希望在网站上看到它们的首字母大写。但是我试图找出一种方法,无论是服务器端(PHP)还是客户端(jQuery),都可以在不更改数据库中任何内容的情况下做到这一点?这可能吗?

代码:

$result = mysql_query("SELECT user from `users` order by user asc") or die(mysql_error());
            echo '<select name="user" class="user">';
            while ($row = mysql_fetch_array($result)) {
                echo "<option value='".$row['user']."'>".$row['user']."</option>";
            }
            echo '</select>';

【问题讨论】:

  • “我已将名称全部小写存储到 mysql 数据库中”。你到底为什么要这么做?像“麦当劳叔叔”这样的名字永远无法正确重新格式化。作为一点建议,通常最好存储提供的信息(在转义后等),然后在输出时处理它。

标签: php jquery mysql


【解决方案1】:

还有

ucwords($row['user']);

如果你想把所有单词都大写。

【讨论】:

    【解决方案2】:

    您也可以使用 CSS:

    #example {
      text-transform: capitalize;
    }
    

    【讨论】:

      【解决方案3】:

      PHP 有ucfirst 函数。

      echo "<option value='".$row['user']."'>".ucfirst($row['user'])."</option>";
      

      通过仅更改option 内部的值,而不是value 属性,您可以确保将相同的值发送回服务器。请注意,您也可以使用strtolower 来确保字符串全部为小写。

      【讨论】:

      • 出于某种原因,仅将第一个单词的第一个字母大写。是否可以选择将每个首字母大写,即。乔博客,而不是现在:乔博客
      • @benhowdle89 ucwords。但是,请参阅上面 middaparka 的观点。
      【解决方案4】:

      在 PHP 中你可以使用函数 UCfirst(str);实现这一目标。

      您也可以在 SQL 查询中执行此操作 - 但不确定这是执行此操作的最佳方式。

      SELECT CONCAT(UPPER(SUBSTRING(firstName, 1, 1)), 
      LOWER(SUBSTRING(firstName FROM 2))) AS properFirstName
      

      【讨论】:

        【解决方案5】:

        或者你可以像这样通过 css 来做:

        div.caps { text-transform: capitalize; } 
        

        结果是:

        这是一些文字。

        【讨论】:

          【解决方案6】:

          您也可以使用 MySQL:

          SELECT CONCAT(UPPER(SUBSTR(user, 1, 1)), SUBSTR(user, 2)) FROM `users` ORDER BY user ASC
          

          【讨论】:

            【解决方案7】:

            类似的东西

            $result = mysql_query("SELECT user from `users` order by user asc") or die(mysql_error());
            echo '<select name="user" class="user">';
            while ($row = mysql_fetch_array($result)) {
                $user = explode(" ", $row['user']);
                echo "<option value='".$row['user']."'>".ucfirst($user[0]).' '.ucfirst($user[1])."</option>";
            }
            echo '</select>';
            

            【讨论】:

              【解决方案8】:

              请注意,每个国家/地区的大小写字母之间的映射并不相同;最著名的例子是土耳其,其中 i İ 和 ı I;此外,名称往往有更复杂的大小写规则(例如,“MacDonald”、“deVries”、“von Hohenzollern”都是专有姓氏)

              我会在数据库上运行一次转换,然后不理会表示层。

              【讨论】:

                猜你喜欢
                • 2020-08-30
                • 2016-12-05
                • 2015-11-10
                • 1970-01-01
                • 2017-08-02
                • 2013-12-15
                • 1970-01-01
                • 2015-12-10
                • 2014-11-15
                相关资源
                最近更新 更多