2010-11-18 9 views
0

少なくとも1つの疑問符が含まれているかどうかを検出する文字列があります。戻り値がfalseの場合私はそれを探すことを試みたが、questiomarkは特別なキャラクターだと思われる。それについてどうやって行きますか?正規表現に文字列に少なくとも1つの疑問符が含まれている場合はfalse

ありがとうございました。

+0

あなたは特に正規表現が必要ですか、他のロジックはあなたと一緒に使えますか? – BeemerGuy

+0

これは正規表現である必要があります。それはcakephpのカスタム検証の一部です。理論的には、strposで行うことができますが、そのためには余分な機能を実装する必要があります。 – ondrobaco

答えて

3

正規表現の必要はありません。

if (strpos($str, '?') !== false) { 
    return false; 
} 

// Shorter but always executes due to lack of a conditional structure 
// May not be what you need if you're doing various other checks 
return strpos($str, '?') === false; 

しかし、あなたは正しい、?は、正規表現での特殊文字です。これは正規表現エンジンに何かのゼロまたは1つの出現を探すよう指示します。

さらに複雑な正規表現で疑問符をチェックする場合は、Paul Kehrer saysとすると、単純にバックスラッシュでエスケープします。

+0

+1厳密な比較と正規表現以外の解決法! – jwueller

5

あなたはエスケープする必要がありますか?あなたの正規表現で。 preg_match('/\?/','A string?',$matches)は一致するものを返しますか?もし存在すれば。

つまり、これにはstrpos()を使用できます。あなたが本当に見つける正規表現エンジンを必要としないので、より速いでしょうか?

+0

+1とにかく、正規表現のソリューションを提供します。 – BoltClock

+0

実際に私はそれを別の方法で持っている必要があります..疑問符がない場合はtrueを返します。少なくとも1つの疑問符がある場合はfalseを返します。 – ondrobaco

+0

preg_matchは、見つかった一致に対応するintを返します。あなたがこれを使用すれば、あなたは設定されます。 –

関連する問題