Отвечая на мой вопрос и после нескольких попыток решить проблему с помощью регулярных выражений, как указано в проблеме, а также с помощью людей, которые пришли сюда, чтобы попытаться помочь мне, я нашел решение, которое работает для отсутствующий атрибут href=""
в элементе.
Так как результат curl
может прийти с ним или без него, но блок всегда есть, я просто добавил следующий код php для трех ссылок:
$result = str_replace('<a id="facebooklink"','<a href="NULL" id="facebooklink"', $result);
$result = str_replace('<a id="twitterlink"','<a href="NULL" id="twitterlink"', $result);
$result = str_replace('<a id="linkedinlink"','<a href="NULL" id="linkedinlink"', $result);
То, что это делает, добавляет недостающий href=""
из элемента, и теперь, даже если один из них не удался, другие возвращают совпадение.
Вид взлома и немного дорогой, но не настолько волнующий об этом на данный момент, поскольку система справляется с этим очень хорошо.