2

「<」「>」などの特殊文字や二重引用符自体が文字列に含まれているかどうかを確認したい。しかし、私の関数は常に true を返します。

ありがとうございました

これはコードです:

$name = "<h1><dfdafdfds";

function correctName($name){
    if (strlen($name) < 5 || (strpos($name, "<")===true) || 
    (strpos($name, ">")===true) || (strpos($name, "\"")===true)){

        return false;
    }else{
        return true;
    }
}
4

2 に答える 2

6

Strpos はfalse、 または のような整数値を返します5。戻りませんtrue

したがって(strpos($name, "<")===true、常に false を返します。

コードは次のように評価されます。

if (strlen($name) < 5 || false) || 
(false) || (false)){

    return false;
}else{
    return true;
}

次の形式を使用する必要があります。

strpos($name, '<') !== false

したがって、コードは次のようになります。

if (strlen($name) < 5 || strpos($name, "<") !== false || strpos($name, ">") !== false || strpos($name, "\"") !== false) {
于 2012-08-24T06:12:45.657 に答える
1

strpos決して戻りませんTRUE。戻るかもしれませんFALSE。解決策:比較を次のように変更します!== FALSE

于 2012-08-24T06:15:28.223 に答える