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 に答える