1

我在提要中有以下字符串。我需要匹配粗体部分并将其存储在一个变量中:

  1. 随机事件名称12:30PM 至 1:30PM
  2. 随机事件名称再次下午 2:30

更新:

我使用了@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:30PM to 1:30PM

标题:篮球(M 和 W)vs 克利夫兰州立大学
时间:下午 6:00

标题:为孩子们庆祝圣诞节!
时间:下午 2:00 至下午 4:00

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

相同的正则表达式将匹配两个字符串示例,并且还将获取“到”部分。

于 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 回答