[PHP-users 29627] Re: 正規表現の値の確保

M.Terao mayo @ b-gets.ddo.jp
2006年 7月 5日 (水) 14:10:25 JST


寺尾です。

配列に入れたい項目を()括弧で囲みましょう。

Ereg( "^([0-9]+)/([0-9]+)/([0-9]+)$" , $_REQUEST["birthday"], $backRef )

多分こんな感じになるのかな??



> こんにちは、Shouです。
> 
> 正規表現で正しい日付の判別を行おうとしているのですが、
> <?php
> 	if( Ereg( "^[0-9]+/[0-9]+/[0-9]+$" , $_REQUEST["birthday"], $backRef ) ) {
> 		if( CheckDate( $backRef[2],$backRef[3],$backRef[1] ) ) {	//月、日、年の順番で
> 			print "正しい書式です\n";
> 		} else {
> 			print "不正な入力:存在しない日付\n";
> 		}
> 	} else {
> 		print "不正な入力:yyyy/mm/dd形式で\n";
> 	}
> 	print "\n";
> 	print_r( $backRef );
> ?>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
> <title>無題ドキュメント</title>
> </head>
> <body>
> </body>
> </html>
> というコードを、変数birthdayに適切な値を入力して実行すると、正しい値が確保されていても
> Notice: Undefined offset: 2 in c:\inetpub\wwwroot\formcheck\checkData.php on line 3
> 
> Notice: Undefined offset: 3 in c:\inetpub\wwwroot\formcheck\checkData.php on line 3
> 
> Notice: Undefined offset: 1 in c:\inetpub\wwwroot\formcheck\checkData.php on line 3
> 不正な入力:存在しない日付 Array ( [0] => 1971/02/14 ) 
> というメッセージが出ます。
> 配列backRefには0番の要素しか入っていないとのことですが、書籍にはEreg関数の後方参照には1番から配列が入力されると書いてありました。
> PHPマニュアルにも同様のことが書いてありました。
> どのようにしたら[1]〜[3]の配列要素を確保できるのでしょうか。
> PHP5.1.4
> Windows2000SP4です。
> 
> よろしくお願いします。
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
> 





PHP-users メーリングリストの案内