如何使ctype_upper忽略大写检查空格?

时间:2012-10-16 11:47:39

标签: php ignore spaces uppercase

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

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

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

但是,如果字符串$ item包含任何空格(例如“THIS STRING”),则不会应用此“大写”类属性。

有没有人对如何避免这种情况有所了解。

提前致谢

2 个答案:

答案 0 :(得分:3)

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

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

然而,在你自己的函数中做一个抽象级别可能是个好主意:

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

然后:

if (isMenuItemUpperCase($item))

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

答案 1 :(得分: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" : "";
}