/**
  * 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;
 }
Example #2
0
 /**
  * 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);
 }