2011-12-06 17 views
5

は私がうまく働いたことのテストを持っていた:PHPするpreg_matchと「不明な修飾語」エラー

if (ereg("([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})", $dateToTest, $tab) == false) 

とEREGが廃止されましたように、私はこの1つでそのテストに置き換えています:

if (preg_match("/([0-9]{2})[-./]([0-9]{2})[-./]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})/", $dateToTest, $tab) == false) 

をしかし、次のエラーが表示されます。

Warning: preg_match() [function.preg-match]: Unknown modifier '.' in .................. 

問題は何ですか?どのように解決できますか?

+0

の可能な複製[ereg表現をpregに変換](http://stackoverflow.com/questions/6270004/converting- ereg-expressions-to-preg) – mario

答えて

8

問題はデリミタ/です。これは、正規表現で再度使用するためです。あなたはそれを\/をエスケープするか、@のような別の区切り文字を使用する必要が

if (preg_match("@([0-9]{2})[-/.]([0-9]{2})[-/.]([0-9]{4})[ ]([0-9]{2}):([0-9]{2}):([0-9]{2})@", $dateToTest, $tab) == false) 

Docu例#3を参照してください。 delimitersについてのマニュアルもあります。

+0

デリミタについてのdocuへのリンクを追加しました。 – PiTheNumber

4

式にエスケープされていないスラッシュがあります。 /\/に変更するか、@などの別の区切り文字を使用して式を開始してください。

0

ここでのエラーは/.です。私はこの正規表現で何を意味するのかわからないので、.または\.

+0

それは明らかです:私は、日付の3つの区切りを持つことができる日時形式をテストします:[ - 。 /] – Oliver

+0

@Oliverああ、申し訳ありません。それは私の仕事の終わりです:) – k102

関連する問題