Помогите с preg_math

dimases

Новичок
Помогите с preg_math

Никак не могу понять, как из строки вытащить при помощи регулярных выражений. Толи заработался, толи еще что-то (раньше, вроде все работало).
Посмотрите, что не то, а то горит =(

PHP:
$a='<li><a href="www.site.ru" class="link">site1 desc1</a></li><li><a href="www.site2.ru" class="link">site2 desc2</a></li>';
preg_match_all('|(<a href="(.+)" class="link">(.+) (.+)</a>)|',$a,$found);
print_r($found);
Нужно вытащить урл (www.siteX.ru), и из тела ссылки siteX и descX.

Результат сейчас:
PHP:
Array
(
    [0] => Array
        (
            [0] => <a href="www.site.ru" class="link">site1 desc1</a></li><li><a href="www.site2.ru" class="link">site2 desc2</a>
        )

    [1] => Array
        (
            [0] => <a href="www.site.ru" class="link">site1 desc1</a></li><li><a href="www.site2.ru" class="link">site2 desc2</a>
        )

    [2] => Array
        (
            [0] => www.site.ru" class="link">site1 desc1</a></li><li><a href="www.site2.ru
        )

    [3] => Array
        (
            [0] => site2
        )

    [4] => Array
        (
            [0] => desc2
        )

)
 

Кром

Новичок
Парсинг урлов самая популярная тема в регулярных выражениях на этом сайте. Что делать дальше, надеюсь объяснять не надо.
 

dimases

Новичок
Я знаю, что много, только на свой вопрос ответа там не нашел. По логике все должно работать, а почему не хочет - не пойму. Вот и спрашиваю.

-~{}~ 15.03.06 20:16:

Дело в том, что он выводит в массив только последнюю ссылку. А не все, как должен был бы.
 

Кром

Новичок
>Я знаю, что много, только на свой вопрос ответа там не нашел.

Чтобы найти ответ его нужно искать.
 

XlightX

Новичок
Попробуй

По идее должен вытащить линки.
preg_match_all('/ (\w{3})\.(\w+)\.(\w{2}) / i ',$a, $found);

Из тела ссылки siteX и descX:

preg_match_all('/site[\d]+/ i ',$a, $found2);


preg_match_all('/desc[\d]+/ i ',$a, $found3);
 
Сверху