preg_match_all в той же строке

я имею:

<a href="http://www.test.com/performers/test-1/" title="">test 1</a>                                <a href="http://www.test.com/performers/test-2/" title="">test 2</a>

Я хотел бы, чтобы заголовок 1, заголовок 2 как результат.

Я написал:

$m=array();
preg_match_all('/<a href="http:\/\/www.test.com\/performers\/(.*)\/" title="">(.*)<\/a>/i', $buff,$m);
$info['models'] = implode(',', $m[2]);

В результате я получаю только титул 2.

Но если HTML-коды title 1 и title 2 не совпадают, я получаю title 1, title 2.

Как получить заголовок 1, заголовок 2 как результат, когда весь HTML-код находится в одной строке?

Спасибо.

1

Решение

Проблема в жадности регулярных выражений. (.)* участие в ваших матчах регулярных выражений test-1/" title="">test 1</a> <a href="http://www.test.com/performers/test-2 вместо только test-1, Если вы добавите модификатор U к вашему шаблону ваше регулярное выражение работает. Но вы должны экранировать еще несколько символов в вашем регулярном выражении, то есть все точки соответствуют любому символу, а не только точке:

$m = array();
preg_match_all('/<a\ href="http:\/\/www\.test\.com\/performers\/(.*)\/"\ title="">(.*)<\/a>/Ui', $buff,$m);
$info['models'] = implode(',', $m[2]);

И, честно говоря, работать над DOM здесь намного безопаснее.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]