0

提供されたすべての変数でスペースを検索する関数「isValid」があります。どの変数にもスペースが含まれていない場合、関数がtrueを返すようにします。これは正しいアプローチでしょうか?

return !(strpos($this->email, " ") || strpos($this->confirm_password1, " ") || strpos($this->handle, " ") || strpos($this->phone, " "));
4

3 に答える 3

2

それを簡単に保守できるようにするために、私は次のようなことをします:

public function isValid()
{
    $properties = array(
        'email',
        'confirm_password1',
        'handle',
        'phone',
    );

    foreach ($properties as $property) {
        if ($this->containsSpace($property)) {
            return false;
        }
    }

    return true;
}

private function containsSpace($property)
{
    return !(strpos($this->$property, '') === false);
}

=== falseのチェックとしてstrpos()注意してください。デモ:http ://codepad.viper-7.com/0ZgNZq 。

これはスペースのみをチェックし、他の空白文字はチェックしないことに注意してください。他の空白文字を確認したい場合は、単純な正規表現を使用することをお勧めします。

private function containsSpace($property)
{
    return (bool)preg_match('/\s/', $this->$property);
}

そして最後に、もしあなたが本当にそれをあなたのオリジナルの方法でやりたいのなら、私は次のようなことをするでしょう:

public function isValid()
{
    return strpos($this->email, " ") === false && strpos($this->confirm_password1, " ") === false && strpos($this->handle, " ") === false && strpos($this->phone, " ") === false;
}
于 2012-12-05T17:41:19.140 に答える
1
function isValid($var) {
  if (strpos($var, ' ') === false) {
    // Does not contain a space character.
    return true;
  }
  return false;
}
于 2012-12-05T17:25:31.250 に答える
1
return (strpos($this->email, " ") === false && strpos($this->confirm_password1, " ")  === false && strpos($this->handle, " ") === false && strpos($this->phone, " ") === false)

しかし、これはかなり読めないコードになります...

于 2012-12-05T17:34:00.373 に答える