1

フィードに以下の文字列があります。太字部分を一致させ、変数に格納する必要があります。

  1. ランダムイベント名12:30 PM~1:30PM
  2. Ramdom イベント名再び2:30PM

アップデート:

@cryptic が提供するソリューションを使用しました。

結果は次のとおりです。

 $titles = array( 
                "*~Svet~* 12:30PM to 1:30PM",
                "Basketball (M and W) vs Cleveland State 6:00PM",
                "Christmas for the Kids Celebration! 2:00PM to 4:00PM"
            );

foreach ($titles as $title) {
    //get date
    preg_match('/(\d{1,2}:\d{2}[ap]m)( to \d{1,2}:\d{2}[ap]m)?/i', $title, $match);
    //get title
    $cleanTitle = preg_split('/([0-1][0-9]|[0-9]):?([0-5][0-9])/', $title);

echo "<p>Title: ".$cleanTitle[0]."<br />Time: ".$match[0]."</p>"; 

}

//出力

タイトル: ~Svet~
時間: 12:30 PM~1:30PM

タイトル: Basketball (M and W) vs Cleveland State
時間: 6:00PM

タイトル:子供たちのクリスマスのお祝い!
時間:午後2時~午後4時

4

2 に答える 2

2
// String example 1
$string = 'Ramdom Event Name 12:30PM to 1:30PM';
preg_match('/(\d{1,2}:\d{2}[ap]m)( to \d{1,2}:\d{2}[ap]m)?/i', $string, $match);
echo $match[0]; // outputs 12:30PM to 1:30PM

// String example 2
$string = 'Ramdom Event Name again 2:30PM';
preg_match('/(\d{1,2}:\d{2}[ap]m)( to \d{1,2}:\d{2}[ap]m)?/i', $string, $match);
echo $match[0]; // outputs 2:30PM

同じ正規表現は両方の文字列の例に一致し、「to」部分も取得します。

于 2012-11-28T20:03:50.367 に答える
0

以下を使用して解決できますregex
/\d{1,2}:\d{2}(?:a|p)m(?: to \d{1,2}:\d{2}(?:a|p)m)*/i

于 2012-11-28T20:31:58.133 に答える