2

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

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

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

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

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

提前致谢

4

2 回答 2

4

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

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

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

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

进而:

if (isMenuItemUpperCase($item))

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

于 2012-10-16T11:51:49.693 回答
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" : "";
}
于 2012-10-16T12:16:20.553 回答