Index: /branches/version-2_5-dev/data/class/util/SC_Utils.php
===================================================================
--- /branches/version-2_5-dev/data/class/util/SC_Utils.php	(revision 18767)
+++ /branches/version-2_5-dev/data/class/util/SC_Utils.php	(revision 18768)
@@ -2401,4 +2401,48 @@
     }
 
+    /**
+     * 変数が空白かどうかをチェックする.
+     *
+     * 引数 $val が空白かどうかをチェックする. 空白の場合は true.
+     * 以下の文字は空白と判断する.
+     * - " " (ASCII 32 (0x20)), 通常の空白
+     * - "\t" (ASCII 9 (0x09)), タブ
+     * - "\n" (ASCII 10 (0x0A)), リターン
+     * - "\r" (ASCII 13 (0x0D)), 改行
+     * - "\0" (ASCII 0 (0x00)), NULバイト
+     * - "\x0B" (ASCII 11 (0x0B)), 垂直タブ
+     *
+     * 引数 $val が配列の場合は, 空の配列の場合 true を返す.
+     *
+     * 引数 $greedy が true の場合は, 全角スペース, ネストした空の配列も
+     * 空白と判断する.
+     *
+     * @param mixed $val チェック対象の変数
+     * @param boolean $greedy "貧欲"にチェックを行う場合 true
+     * @return boolean $val が空白と判断された場合 true
+     */
+    function isBlank($val, $greedy = true) {
+        if (is_array($val)) {
+            if ($greedy) {
+                foreach ($val as $in) {
+                    if (!SC_Utils::isBlank($in, $greedy)) {
+                        return false;
+                    }
+                }
+            } else {
+                return empty($val);
+            }
+        }
+
+        if ($greedy) {
+            $val = preg_replace("/　/", "", $val);
+        }
+
+        $val = trim($val);
+        if (strlen($val) > 0) {
+            return false;
+        }
+        return true;
+    }
 }
 ?>
Index: /branches/version-2_5-dev/test/class/util/SC_Utils_Test.php
===================================================================
--- /branches/version-2_5-dev/test/class/util/SC_Utils_Test.php	(revision 18767)
+++ /branches/version-2_5-dev/test/class/util/SC_Utils_Test.php	(revision 18768)
@@ -78,4 +78,44 @@
         $this->assertEquals($expected, $actual);
     }
+
+    function testIsBlank() {
+        $val = "";
+        $this->assertTrue(SC_Utils::isBlank($val));
+
+        $valIsNotBlank = "\x00..\x1F  a \n\t";
+        $this->assertTrue(SC_Utils::isBlank($val));
+
+        $wideSpace = "　";
+        $this->assertTrue(SC_Utils::isBlank($wideSpace));
+        // greedy is false
+        $this->assertFalse(SC_Utils::isBlank($wideSpace, false));
+
+        $array = array();
+        $this->assertTrue(SC_Utils::isBlank($array));
+
+        $nestsArray = array(array(array()));
+        $this->assertTrue(SC_Utils::isBlank($nestsArray));
+        // greedy is false
+        $this->assertFalse(SC_Utils::isBlank($nestsArray, false));
+
+        $nestsArrayIsNotBlank = array(array(array("1")));
+        $this->assertFalse(SC_Utils::isBlank($nestsArrayIsNotBlank));
+        // greedy is false
+        $this->assertFalse(SC_Utils::isBlank($nestsArrayIsNotBlank, false));
+
+        $wideSpaceAndBlank = array(array("　\n　"));
+        $this->assertTrue(SC_Utils::isBlank($wideSpaceAndBlank));
+        // greedy is false
+        $this->assertFalse(SC_Utils::isBlank($wideSpaceAndBlank, false));
+
+        $wideSpaceIsNotBlank = array(array("　\na　"));
+        $this->assertFalse(SC_Utils::isBlank($wideSpaceIsNotBlank));
+        // greedy is false
+        $this->assertFalse(SC_Utils::isBlank($wideSpaceIsNotBlank, false));
+
+        $zero = 0;
+        $this->assertFalse(SC_Utils::isBlank($zero));
+        $this->assertFalse(SC_Utils::isBlank($zero, false));
+    }
 }
 ?>
