Использование DOM - это, как правило, лучшая идея для подобных вещей.
$html = <<<HTML
<html>
<body>
<span itemprop="average" content="XX"></span>
</body>
</html>
HTML;
libxml_use_internal_errors(TRUE);
$dom = new DOMDocument();
$dom->loadHtml($html);
$xpath = new DOMXpath($dom);
$content = $xpath->evaluate('string(//span[@itemprop = "average"]/@content)');
var_dump($content);
libxml_use_internal_errors() отключает вывод ошибки для плохого html. Вы можете использовать libxml_get_errors() для их чтения и libxml_clear_errors(), чтобы очистить текущий буфер ошибок.
Затем создается DOMDocument и загружается html. DOMDocument :: loadHtmlFile() позволит загрузить его из файла или URL-адреса.
После загрузки документа вы можете создать объект DOMXpath для загруженного документа, он позволяет запрашивать элементы из него.
DOMXpath :: evaluation() позволяет запрашивать списки узлов и скаляры из документа. Строковый тип в выражениях xpath передает узел атрибута в строку и возвращает значение. Без typecast результатом будет DOMNodelist, содержащий любое количество узлов DOMAttribute. При этом результатом является значение атрибута или пустая строка.
Не каждый элемент HTML называется 'div'. Это 'span'. – powerbuoy