2012-10-16 43 views
2

我的代碼中有以下部分。它檢查$ item是否爲大寫,如果是,則向div元素添加一個「大寫」類。如何使ctype_upper忽略大寫檢查上的空格?

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

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

但是,如果字符串$ item包含任何空格(如'THIS STRING'),則不會應用此類屬性'大寫'。

有沒有人有關於如何避免這種情況發生的想法。

在此先感謝

回答

3

您可以從$item測試之前暫時刪除空格:

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

但是它可能是一個好主意,這樣做你自己的函數內部作爲一個抽象層:

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

然後:

if (isMenuItemUpperCase($item)) 

通過這種方式,呼叫站點(最後一行)非常清晰,並且您有一箇中心位置,如果需要,您可以在未來改變行爲。

+0

釷安克斯喬恩。作品一種享受! – fidev

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" : ""; 
} 
+0

也謝謝巴巴! – fidev