metadataFactory = $metadataFactory; } /** * Parse metadata * * @param string $data * @return MetadataInterface */ public function execute(string $data): MetadataInterface { $title = null; $description = null; $keywords = []; if (is_callable('iptcparse')) { $iptcData = iptcparse($data); if (!empty($iptcData[self::IPTC_TITLE][0])) { $title = trim($iptcData[self::IPTC_TITLE][0]); } if (!empty($iptcData[self::IPTC_DESCRIPTION][0])) { $description = trim($iptcData[self::IPTC_DESCRIPTION][0]); } if (!empty($iptcData[self::IPTC_KEYWORDS][0])) { $keywords = array_values($iptcData[self::IPTC_KEYWORDS]); } } return $this->metadataFactory->create([ 'title' => $title, 'description' => $description, 'keywords' => !empty($keywords) ? $keywords : null ]); } }