2

私はPHPの文章から日付を取得しようとしています..例えば

2006 年 10 月 8 日を取得しようとしています。

「この建物は、大嵐の後、2006 年 10 月 8 日に清掃されました。」

https://github.com/etiennetremel/PHP-Find-Date-in-Stringという github 関数があり ますが、2012 年 1 月 5 日などの日付では失敗します。

日付文字列のさまざまな性質を考えると、文字列内の日付文字列を見つけることは、特定の形式の単純な REGEX や、特定の文字列入力を単純にストロトタイミングするよりもはるかに難しいことを認識しています..

誰か良いアイデアはありますか?

4

3 に答える 3

1

まず、いくつかの基本的なパターンを探し、正規表現のいくつかのパスでそれらを抽出することから始めます(mm / dd/yyとmm/dd / yyyyを使用して\d{2]/\d{2}/\d{2,4}、他のパターンを探します\d{1,2}(th|st|rd)? Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)|Nov(ember)?|Dec(ember)

ほぼ確実に、いくつかの正規表現を記述してパスで実行する方が、1つの大規模な表現を記述するよりも高速です。

次に、抽出したものをに渡してstrtotime、使用可能なUNIXタイムスタンプを取得し、そこから必要な処理を実行します。

警告:

  • 私は正規表現を試していません、明らかな最適化があります
  • 日付は常にUSAスタイル(dd / mm/yyではなくmm/dd / yy)であるという前提で機能します
于 2013-03-13T17:59:18.840 に答える
1

2010 年 10 月 8 日はあまり多くを語っていないため、実用的な解決策はないと思います... 10 日または 1 か月になる可能性があります...正規表現を続行できると思います:)

于 2013-03-13T17:53:38.440 に答える
0

正規表現を使えばもっと簡単になると思います。問題は、日付の書き方に多くのオプションがあることです。

于 2013-03-13T17:58:07.810 に答える