You are here

function _shortcode_parse_attrs in Shortcode 6

Same name and namespace in other branches
  1. 7.2 shortcode.module \_shortcode_parse_attrs()
  2. 7 shortcode.module \_shortcode_parse_attrs()

Retrieve all attributes from the shortcodes tag.

The attributes list has the attribute name as the key and the value of the attribute as the value in the key/value pair. This allows for easier retrieval of the attributes, since all attributes have to be known.

@since 2.5

Parameters

string $text:

Return value

array List of attributes and their value.

1 call to _shortcode_parse_attrs()
_shortcode_process_tag in ./shortcode.module
Regular Expression callable for do_shortcode() for calling shortcode hook.

File

./shortcode.module, line 468

Code

function _shortcode_parse_attrs($text) {
  $atts = array();
  $pattern = '/(\\w+)\\s*=\\s*"([^"]*)"(?:\\s|$)|(\\w+)\\s*=\\s*\'([^\']*)\'(?:\\s|$)|(\\w+)\\s*=\\s*([^\\s\'"]+)(?:\\s|$)|"([^"]*)"(?:\\s|$)|(\\S+)(?:\\s|$)/';
  $text = preg_replace("/[\\x{00a0}\\x{200b}]+/u", " ", $text);
  if (preg_match_all($pattern, $text, $match, PREG_SET_ORDER)) {
    foreach ($match as $m) {
      if (!empty($m[1])) {
        $atts[strtolower($m[1])] = stripcslashes($m[2]);
      }
      elseif (!empty($m[3])) {
        $atts[strtolower($m[3])] = stripcslashes($m[4]);
      }
      elseif (!empty($m[5])) {
        $atts[strtolower($m[5])] = stripcslashes($m[6]);
      }
      elseif (isset($m[7]) and strlen($m[7])) {
        $atts[] = stripcslashes($m[7]);
      }
      elseif (isset($m[8])) {
        $atts[] = stripcslashes($m[8]);
      }
    }
  }
  else {
    $atts = ltrim($text);
  }
  return $atts;
}