【问题标题】:How to make ctype_upper ignore spaces on uppercase check?如何让 ctype_upper 在大写检查时忽略空格?
【发布时间】:2012-10-06 12:19:16
【问题描述】:

我的部分代码中有以下内容。它检查 $item 是否为大写,如果是,则向 div 元素添加一个“大写”类。

`echo "<div class='". $alt . "'><div class='menu-item";

        if (ctype_upper($item)) { 
            echo " uppercase";
        } 
        echo "'>" .$item . "</div>";`

但是,如果字符串 $item 包含任何空格(例如 'THIS STRING'),则不会应用 'uppercase' 的类属性。

有没有人知道如何避免这种情况发生。

提前致谢

【问题讨论】:

    标签: php uppercase spaces


    【解决方案1】:

    我认为最好在使用ctype_upper之前删除所有可能的空白和特殊章程

    例子

    $alt = "Test Alt";
    $item = "THIS STRING \t:\t HI";
    
    printf("<div class='%s'><div class='menu-item %s' > %s </div> </div>", $alt, isUpper($item), $item);
    

    HTML 输出

    <div class="Test Alt">
       <div class="menu-item uppercase"> THIS STRING    :    HI </div>
    </div>
    

    使用的功能

    function isUpper($item) {
        return ctype_upper(preg_replace('/\W+/', '', $item)) ? "uppercase" : "";
    }
    

    【讨论】:

      【解决方案2】:

      您可以在测试前暂时删除$item 中的空格:

      if (ctype_upper(str_replace(' ', '', $item))
      

      但是,在您自己的函数中作为抽象级别执行此操作可能是一个好主意:

      function isMenuItemUpperCase($item) {
          return ctype_upper(str_replace(' ', '', $item);
      }
      

      然后:

      if (isMenuItemUpperCase($item))
      

      这样,调用站点(最后一行)非常清晰易读,并且您有一个中心位置,如果需要,将来可以从该位置更改行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-31
        • 2012-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多