0

私は次のような文字列を持っています

<?php
$string = Monday & SUNDAY 11:30 PM et/pt;
//or
$string = Monday 11:30 PM et/pt;
?>

どちらの場合も '11:30 PM' を取得したいので、explode を使用できないと思います。正規表現はどうなるでしょうか。前もって感謝します

4

4 に答える 4

1

12 時を有効に一致させるには、以下のような正規表現を使用します。12 時間制は 01:00 から 12:59 までです。

$regex = "#\b(?:0[0-9]|1[0-2]):[0-5][0-9] [AP]M\b#i";
于 2012-11-01T12:26:49.907 に答える
1

元のアプローチに対するいくつかの修正については、以下のコメント投稿者に感謝しますが、まだ解決されていない問題がいくつかありました。

固定の 2 時間形式が必要な場合:(0[0-9]|1[0-2]):[0-5]\d [AP]M

于 2012-11-01T12:15:36.947 に答える
0

マリク、事前に作成されたライブラリ正規表現を使用して時刻/日付を取得するには、次のクエリを検索してください: http://regexlib.com/Search.aspx?k=digit&c=5&m=-1&ps=20

基本的に、時間フィールドは似ています (区切り文字':'\d{1,2}:\d{2} [PA]Mが同じです) 。入力文字列で一致させるには、単純な正規表現をお勧めします。大文字と小文字を区別しないようにする場合は、 iパターン修飾子を使用します。正規表現の基本については、こちらをお読みください

PHP のこの一致関数を提供します ( 2 番目のスラッシュ (/) の後のiは、パターンの大文字と小文字を区別しません:am, AM, Am, aMは等しくなります):

  preg_match('/\d{1,2}:\d{2} [PA]M/i', $string, $time);
  print ($time); 

数字の後にスペースがない場合 (例: 午前 11 時 30 分)、または 1 つ以上のスペース文字がある場合、正規表現は次のようになります。 /\d{1,2}:\d{2}\s*[PA]M/i

于 2012-11-01T12:49:18.420 に答える
-1

このコードは午後 11 時 30 分になります。

preg_match('$([0-9:]{3,5}) ([AP])M$','Monday & SUNDAY 11:30 PM et/pt',$m);
echo $m['1']." ".$m['2']."M";
于 2012-11-01T12:30:11.483 に答える