2

PHPで文字列から日付だけ取得したい。この日付形式の preg 式は何ですか:

24/11/2013

次のような日付の前後に追加の文字列があります Hello d2 your date is 24/11/2013 thank you。私はこれを試しました:

preg_match('(\d{2})(/)(\d{2})(/)(\d{4})$',  $my_date_s, $matches);

しかし、これはエラーを示しています

4

2 に答える 2

1

式に開始区切り文字と終了区切り文字を指定していないため、何にも一致しません。区切り文字には、英数字、バックスラッシュ、空白文字以外の任意の文字を使用できます。

見るPHP: Delimiters

preg_match('~\b\d{2}/\d{2}/\d{4}\b~',  $my_date_s, $match);
echo $match[0];

正規表現:

\b          the boundary between a word char (\w) 
            and something that is not a word char
\d{2}       digits (0-9) (2 times)
 /          '/'
\d{2}       digits (0-9) (2 times)
 /          '/'
\d{4}       digits (0-9) (4 times)
\b          the boundary between a word char (\w) 
            and something that is not a word char
于 2013-11-09T18:51:34.697 に答える
1

preg_match('~^\d{2}/\d{2}/\d{4}$~', $my_date_s, $matches);

主なことは、区切り文字を含めなかったことです。文字列 1 の終わりがあったので、文字列アンカーの開始を追加しました..しかし、コンテンツを見ずに正規表現があなたに合っているかどうかを知るのは難しいです..このパターンは、文字列内の唯一のものはあなたの日付であると想定しています.

したがって、文字列内の日付で他のものが含まれている場合は、次のようにします。

preg_match('~\b\d{2}/\d{2}/\d{4}\b~', $my_date_s, $matches);

また、参考までに、これは単純な検証です。形式は検証しますが、実際の日付である場合は検証しません。実際の日付として検証したい場合は、で爆発させてからcheckdate/を使用できます

于 2013-11-09T17:45:37.610 に答える