/** * parse_anchor() * * @param array $match * @return array $anchor **/ function parse_anchor($match) { $anchor = array(); $anchor['attr'] = anchor_utils::shortcode_parse_atts($match[1]); if (!is_array($anchor['attr']) || empty($anchor['attr']['href']) || $anchor['attr']['href'] != (function_exists('esc_url') ? esc_url($anchor['attr']['href'], null, 'db') : clean_url($anchor['attr']['href'], null, 'db'))) { # likely a script return false; } foreach (array('class', 'rel') as $attr) { if (!isset($anchor['attr'][$attr])) { $anchor['attr'][$attr] = array(); } else { $anchor['attr'][$attr] = explode(' ', $anchor['attr'][$attr]); $anchor['attr'][$attr] = array_map('trim', $anchor['attr'][$attr]); } } $anchor['body'] = $match[2]; $anchor['attr']['href'] = @html_entity_decode($anchor['attr']['href'], ENT_COMPAT, get_option('blog_charset')); return $anchor; }
/** * filter_callback() * * @param array $match * @return string $str **/ function filter_callback($match) { # skip empty anchors if (!trim($match[2])) { return $match[0]; } # parse anchor $anchor = anchor_utils::parse_anchor($match); if (!$anchor) { return $match[0]; } # filter anchor $anchor = apply_filters('filter_anchor', $anchor); # return anchor return anchor_utils::build_anchor($anchor); }