您好我已经创建了一个示例页面。请参阅here
我想分别得到活动名称和时间。任何人都可以帮助我吗?
例如。从行
***ENGLISH* MLB: Philadelphia Phillies at Miami Marlins 12.00am-3.00am Stream 7**
注意:** ENGLISH 时间各不相同......时间因上午,下午而异
我希望事件名称,时间和流编号分别如下
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);
这给了整个现场。请帮帮我。
答案 0 :(得分: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'.: -]+
,这意味着来自a-z和A-Z的字符,来自0-9'的数字。 :或 - 必须至少出现一次或多次。它匹配名称。
([0-9]{1,2}.+?[0-9]{1,2})
稍后它会查找小时的第一部分,它是数字的,有1或2位数,然后我可以使用贪婪的算子至少一次任何字符。然后其他数字(分钟)至少1或2位数。
[a,p,A,P,m,M]{2}
对AM或上午或下午或PM负责,它也可以是AA或MM,但这里没关系。
<font color="red">Stream ([0-9]+)<\/font>
此行负责获取数字流的数量,并且需要至少1位数或更多。