Вы делаете то, что не должны делать & ndash; парсинг HTML с помощью регулярных выражений Не делай этого!
Вместо этого используйте функции анализа DOM. Класс PHP DOMDocument довольно прост в использовании и гораздо более разборчив (и стабилен), чем регулярные выражения:
$dom = new DOMDocument;
$dom->loadHTML($yourHTML);
$links = $dom->getElementsByTagName('a');
$hrefs = array();
foreach ($links as $link) {
$hrefs[] = $link->getAttribute('href');
}
Получение других данных, таких как текстовое содержимое или имена других атрибутов, тривиально легко, если вы хотите это сделать.