2006年7月 5日

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

寺尾です。

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

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

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

> こんにちは、Shouです。
>
> 正規表現で正しい日付の判別を行おうとしているのですが、
> > 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 );
> ?>
>
>
>
>
> 無題ドキュメント
>
>
>
>
> というコードを、変数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@xxxxx
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>

_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ns1.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://www.php.gr.jp/php/novice.php3

投稿者 xml-rpc : 2006年7月 5日 14:10
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/39007
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。