0

PHP で true/false スイッチを検証しようとしています。ユーザー入力は、「true」、「1」、「on」、または「yes」にすることができます。さらに、大文字と小文字を区別しない必要があります。正規表現が「1」と「on」でしか機能しないのはなぜですか?

test.php:

define("REGEXP_TRUE", '#/true|1|on|yes/i#');

echo      preg_match( REGEXP_TRUE, "true" );
echo "\n".preg_match( REGEXP_TRUE, "1" );
echo "\n".preg_match( REGEXP_TRUE, "on" );
echo "\n".preg_match( REGEXP_TRUE, "yes" )."\n";

出力:

[mles@worker]$ ./bin/php test.php 
0
1
1
0
4

1 に答える 1

4

二重の区切り文字#//i#誤って配置したため、他の「区切り文字」は正規表現の通常の部分であり、大文字と/i小文字を区別しない修飾子は機能せず、正規表現の一部でした

それはちょうどあるはずです

define("REGEXP_TRUE", '/true|1|on|yes/i');
于 2013-03-19T16:32:32.633 に答える