2013-03-18 8 views
0

Я хочу строку FC Barcelona v BM Huesc, FC Ferrari v BM ameriF и C semari v AM buhari снизу код.Регулярное выражение с новой строкой

$mat = '<font color="white">FC Barcelona v BM Huesca 

<font color="white">FC Ferrari v BM ameri 

<font color="white">FC semari v AM buhari 
'; 

Я попытался ниже код, но он не кажется, work.Any помощь будет

было оценено
preg_match_all('/<font color="white">(.*?)/',$mat,$mats); 
var_dump($mats); 

Edit: Мой реальный пример времени ниже

<?php 
$game = file_get_contents("http://www.firstrow1.eu/bet365/index.html"); 
preg_match_all('/<\/td><td><font color="white">(.*)/m',$game,$mats); 
var_dump($mats); 
?> 
+0

Измените '. *?' На '. *'. –

+0

no не работает – user2182902

+0

Что вы подразумеваете под «не работает»? Что не сработало? Что он сделал? –

ответ

0
preg_match_all("#<font color=\"white\">(.*?)\n#si", $mat, $mats); 

Это работает!

+0

http://codepad.viper-7.com/MfBAQI, чтобы доказать приведенный выше ответ. – kabuto178

+1

Нет никакой реальной выгоды для включения однострочного режима, так как ваша нежелательная точка-звезда, за которой следует новая линия, в любом случае остановится на первой новой строке в целевой строке. –

2

.*? не будет соответствовать ничему, потому что он является более легким и подходит как можно меньше. Поскольку после него нет другой части выражения, это делается, когда она ничего не соответствует. Используйте .*, потому что со всей его жадностью оно будет соответствовать только концу линии. Обратите внимание, что это верно независимо от того, используете ли вы модификатор m или нет.

Смежные вопросы