parse(); } function get_rels(&$data) { if($data && array_key_exists('rels', $data)) { return $data['rels']; } else { return []; } } function get_alternates(&$data) { if($data && array_key_exists('alternates', $data)) { return $data['alternates']; } else { return []; } } // Compares name, summary and content values to determine if they are equal function content_is_equal($a, $b) { // remove html tags $a = strip_tags($a); $b = strip_tags($b); // remove encoded entities $a = preg_replace('/&#?[a-z0-9]{2,8};/i', '', $a); $b = preg_replace('/&#?[a-z0-9]{2,8};/i', '', $b); // remove all non-alphanumeric chars $a = preg_replace('/[^a-zA-Z0-9]/', '', strtolower($a)); $b = preg_replace('/[^a-zA-Z0-9]/', '', strtolower($b)); return $a == $b; } // Given a parsed microformat data structure, find the feed on the page. // This is meant to follow // * http://indiewebcamp.com/feed#How_To_Consume // * http://microformats.org/wiki/h-feed#Parsing // Returns an array: // [ // 'properties' => [ list of mf2 properties of the h-feed ], // 'entries' => [ list of h-entry items of the feed ] // ] function find_feed_info(&$data) { // tantek.com : h-card => h-feed => h-entry // snarfed.org : h-feed => h-entry // aaronparecki.com : h-entry $properties = []; $entries = []; // Find the first h-feed $feeds = Mf2\findMicroformatsByType($data, 'h-feed'); if(count($feeds)) { $feed = $feeds[0]; $properties = $feed['properties']; $entries = Mf2\findMicroformatsByType($feed['children'], 'h-entry', false); return [ 'properties' => $properties, 'entries' => $entries ]; } else { // This is an implied feed if there are h-entry posts found at the top level $entries = Mf2\findMicroformatsByType($data['items'], 'h-entry', false); if(count($entries)) { return [ 'properties' => [], 'entries' => $entries ]; } } return false; }