-3

嗨,我创建了一个示例页面。请看这里

我想分别获取事件名称和时间。谁能帮我?

例如。从线

***ENGLISH* MLB: Philadelphia Phillies at Miami Marlins 12.00am-3.00am Stream 7**

注意:**英语一直在变化...时间变化为上午,下午

我想要事件名称、时间和流编号,如下所示

MLB: Minnesota Twins at Atlanta Braves
12.00am-3.00am
7

我试过了

$game = file_get_contents("http://livestreamly.com/");
preg_match_all('/<font color="gold">(.*?)<p>/',$game,$match);

这给了整个生活。请帮我。

4

1 回答 1

2

我已经检查了您的网站,此正则表达式对您的问题有效

/<\/font>([a-zA-Z0-9\'.: -]+)([0-9]{1,2}.+?[0-9]{1,2}[a,p,A,P,m,M]{2})-([0-9]{1,2}[.:]+?[0-9]{1,2}[a,p,A,P,m,M]{2}) <font color="red">Stream ([0-9]+)<\/font>/

当您使用 preg_match_all 时,我已经检查过http://regexpal.com/ ;输出数组匹配将包含您需要的信息。您需要在此正则表达式中转义一些字符以将其放入 php 变量中。

PHP 有效代码:

$match = array();
preg_match_all('/<\/font>([a-zA-Z0-9\'.: -]+)([0-9]{1,2}.+?[0-9]{1,2}[a,p,A,P,m,M]{2})-([0-9]{1,2}[.:]+?[0-9]{1,2}[a,p,A,P,m,M]{2}) <font color="red">Stream ([0-9]+)<\/font>/',file_get_contents("http://livestreamly.com/"),$match);
print_r($match);

一些输出:

[1] => array(37) {
    [0] => string(45) " MLB: Philadelphia Phillies at Miami Marlins "
    [1] => string(40) " MLB: Minnesota Twins at Atlanta Braves "
    [2] => string(39) " MLB: Cincinnati Reds at New York Mets "
[2] => array(37) {
    [0] => string(14) "12.00am-3.00am"
    [1] => string(14) "12.00am-3.00am"
    [2] => string(14) "12.00am-3.00am"
    [3] => string(14) "12:00am-3:00am"
    [4] => string(14) "12.15am-2.15am"
    [5] => string(14) "12.30AM-3.30AM"
[3] => array(37) {
    [0] => string(1) "6"
    [1] => string(1) "7"
    [2] => string(1) "8"
    [3] => string(1) "9"
    [4] => string(2) "10"

这个怎么运作

首先,它寻找子[a-zA-Z0-9'.: -]+模式,这意味着来自 az 和 AZ 的字符,来自 0-9 ' 的数字。: 或 - 必须至少出现一次或多次。它匹配名称。

 ([0-9]{1,2}.+?[0-9]{1,2})  

稍后它会查找小时的第一部分,它是数字的并且有 1 或 2 位数字,然后 i 可以是任何字符至少一次使用贪婪运算符。然后其他数字(分钟)至少为 1 或 2 位数字。

 [a,p,A,P,m,M]{2}

负责 AM 或 am 或 pm 或 PM 也可以是 AA 或 MM 但在这里没关系。

<font color="red">Stream ([0-9]+)<\/font>

该行负责获取数字流的亨伯,并且需要至少为 1 位或更多位。

于 2013-05-21T08:55:41.337 回答