2010年1月27日

[PHP-users 34974]正規表現におけるアスタリスクのマッチについて

大河内と申します.

正規表現関数を使用して「文字列の中にアスタリスクを含む場合 false」と
いうパターンを書こうとしたところ, 以下のような動作になりました.

<?php
$word = 'word(*';
var_dump(preg_match('/^[a-zA-Z0-9 \\,.\(\)-\/]+$/', $word));

var_dump(preg_match('/^[\/a-zA-Z0-9 \\,.()-]+$/', $word));
?>

実行結果:

int(1)
int(0)

パターンの中のスラッシュ(/)の位置を, ] の直前にすると true を返し, ]
の直前以外の場所に置くと, false を返します.

ereg 関数でも, 同様です.

<?php
$word = 'word(*';
var_dump(ereg('^[[:alnum:][:space:]\\,.()-/]+$', $word));
var_dump(ereg('^[[:alnum:][:space:]/\\,.()-]+$', $word));
?>

実行結果:

int(1)
bool(false)

スラッシュの位置によって, 結果が異なるのは仕様でしょうか?
何故, このような動作になるのか, いまいち理解できません.

仕様であれば, どのあたりのドキュメントを参照したらよろしいでしょうか?
ご教示頂ければ幸いです.

よろしくお願い致します.

--
大河内健太郎(Kentaro Ohkouchi)
E-mail nanasess@xxxxx

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


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




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